http请求方法:GET和POST 的区别

 

GET方式:将表单内容经过编码之后 ,通过URL发送, 使用get方式发送时有255个字符的限制。

POST方式:将表单的内容通过http发送,post没有字符长度的限制

使用GET和POST方式传递参数

在URL地址后面可以附加一些参数

举例:http://www.it315.org/servlet/ParamsServlet?param1=abc&m2=xyz

GET方式

举例:GET /servlet/ParamsServlet?param1=abc&m2=xyz HTTP/1.1

扫描二维码关注公众号,回复: 3617820 查看本文章

特点:传送的数据量是有限制的,一般限制在1KB以下。

POST方式

举例:

POST /servlet/ParamsServlet HTTP/1.1 //请求行

Host: //以下两行为消息头

Content-Type: application/x-www-form-urlencoded

Content-Length: 28

 

param1=abc&m2=xyz //参数

特点:传送的数据量要比GET方式传送的数据量大得多 。

 

总结如下:

  • get参数通过url传递,post放在request body中。(最直观的区别)

  • get请求在url中传递的参数是有长度限制的,而post没有。

  • get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。

    • get请求只能进行url编码,而post支持多种编码方式

    • get请求会浏览器主动cache,而post支持多种编码方式。

    • get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。

 

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 

GET和POST还有一个重大区别,简单的说:

GET产生一个TCP数据包;POST产生两个TCP数据包。

长的说:

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

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

也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

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

1. GET与POST都有自己的语义,不能随便混用。

2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

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

猜你喜欢

转载自blog.csdn.net/Cary_1029/article/details/82120031