Skip to content

Latest commit

 

History

History
22 lines (12 loc) · 1.76 KB

GET POST 区别.md

File metadata and controls

22 lines (12 loc) · 1.76 KB

GET POST 区别

GET 和 POST 的区别如下:

  • GET 用于获取信息,是无副作用的,是幂等的,且可缓存,编码类型urlencoded,URL 的最大长度是 2048 个字符,数据在 URL 中对所有人都是可见的。
  • POST 用于修改服务器上的数据,有副作用,非幂等,不可缓存,编码类型urlencoded或form-data,长度无限制,数据不会显示在 URL 中。

GET 和 POST 报文上的区别

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

POST 方法比 GET 方法安全?

​ 从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上捉包,就能完整地获取数据报文。要想安全传输,就只有加密,也就是 HTTPS。

GET 方法的长度限制是怎么回事?

​ HTTP 协议没有 Body 和 URL 的长度限制,对 URL 限制的大多是浏览器和服务器的原因。服务器是因为处理长 URL 要消耗比较多的资源,为了性能和安全(防止恶意构造长 URL 来攻击)考虑,会给 URL 长度加限制。

POST 方法会产生两个 TCP 数据包?

​ 有些文章中提到,post 会将 header 和 body 分开发送,先发送 header,服务端返回 100 状态码再发送 body。HTTP 协议中没有明确说明 POST 会产生两个 TCP 数据包,而且实际测试(Chrome)发现,header 和 body 不会分开发送。所以,header 和 body 分开发送是部分浏览器或框架的请求方法,不属于 post 必然行为。