GET和POST区别?

  • A+
所属分类:Web前端
摘要

      HTTP GET 方法请求指定的资源。使用 GET 的请求应该只用于获取数据


GET和POST区别?

 

 

 

 

 

 

GET

HTTP GET 方法请求指定的资源。使用 GET 的请求应该只用于获取数据

GET请求没有主体,在正确实现的条件下GET 方式是安全、幂等、可缓存的,并且支持html表单提交

POST

 HTTP POST 方法 发送数据给服务器

POST请求通常是通过HTML表达发送,并返回服务器的修改结果

POST有请求体,POST方式是不安全、不幂等、可缓存的

幂等:连续调用一次或者多次的效果相同(无副作用)

但连续调用同一个POST可能会带来额外的影响,比如多次提交订单

总结!

GET和POST所谓区别,只是浏览器厂家根据约定,做得限制而已:

  • GET是通过明文发送数据请求,而POST是通过密文(安全)

  • GET传输的数据量有限,因为url的长度有限,POST则不受限

  • GET请求的参数只能是ASCII码(中文需要URL编码)

  • GET产生一个TCP数据包,POST产生两个TCP数据包

    • 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)

    • 对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。

为什么?

  1. GETPOST都有自己的语义,不能随便混用

  2. 在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视

  3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次

 GET和POST区别?