GET与POST的区别

简介: GET与POST的区别

1. 常见回答

当你被问到GET请求与POST请求有什么区别的时候,是不是会把下面这张表给背出来呢?

但是,如果你只能背出来这张表,那就有点不够深入啦~ 我们来一起看看GET请求与POST请求的本质区别吧。

2. 本质区别

先说结论,本质上,GET和POST没有区别,都是HTTP协议中的两种发送请求的方法。


因为GET和POST只是HTTP协议中的两种请求方式,而HTTP协议是基于TCP/IP的应用层协议,所以无论GET还是POST,用的都是同一个传输层协议,所以在传输上是没有区别的。


而在报文格式上,不带任何参数时最大的区别就是第一行的方法名不同:


GET方法请求报文第一行如下:GET + URL + HTTP/1.1

POST方法请求报文第一行如下:POST+ URL + HTTP/1.1

GET和POST能做的事情是一模一样的,GET可以加request body,POST也可以使用url参数,但是不建议这么做。


举个例子,就比如TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,包括GET、POST、PUT等等,HTTP规定,当执行GET请求的时候,要设置method为GET,而且要求把传送的数据放在url中以方便记录。如果是POST请求,就要设置method为POST,并把传送的数据放在request body中。

3. 关于数据长度的限制

其实在Web中数据长度的限制与浏览器Client端和服务器Server端有关。


虽然理论上我们可以在url中无限加参数,但是数据量太大对浏览器和服务器都是很大负担,因此业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。


如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你读出数据,有些服务器直接忽略。所以,虽然GET可以带request body,却不能保证一定能被接收到。


4. 关于安全性问题

如果是依据数据在地址栏上是否可见来说的话,POST是比GET安全的。然而,从传输的角度来说,他们都是不安全的,因为HTTP在网络上是明文传输的,只要在网络节点上进行抓包就能完整地获取数据报文,所以要想安全传输就只有加密,也就是使用HTTPS。

目录
相关文章
|
数据可视化 前端开发 搜索推荐
数字孪生可视化开发技术(ThingJS)学习笔记
数字孪生可视化开发技术(ThingJS)学习笔记
923 0
|
开发工具 git Python
python之 libnum库安装使用方法
python之 libnum库安装使用方法
994 0
|
存储 小程序 数据可视化
使用无代码工具开发一款问卷调查小程序
使用无代码工具开发一款问卷调查小程序
|
9月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
7715 23
|
JavaScript
Vue3基础(24)___vue3中使用vuex
本文介绍了在Vue 3中如何使用Vuex进行状态管理,包括安装Vuex、创建store、定义state、mutations、actions、getters,以及在组件中使用这些选项。同时,还介绍了如何通过`$store`在组件内部访问和修改状态,以及如何使用命名空间对模块进行隔离。
474 3
|
域名解析 监控 网络协议
slb配置域名注意事项
slb配置域名注意事项
249 11
|
JavaScript
使用Vue+Textarea实现在文本内容变化时自适应高度
这篇文章提供了Vue 2和Vue 3中实现Textarea在文本内容变化时自适应高度的示例代码和方法。
1051 0
使用Vue+Textarea实现在文本内容变化时自适应高度
|
缓存 安全 API
Post请求和get请求的区别是什么?
Post请求和get请求的区别是什么?
1163 2
|
Web App开发 JSON JavaScript
WebGL简易教程(十五):加载gltf模型
WebGL简易教程(十五):加载gltf模型
478 1
|
程序员
github登录+注册方法
github登录+注册方法
479 0