详解POST与GET

参考资料:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp

POST和GET同属于HTTP请求的两种方法

A、GET是从服务器获取数据,POST是向服务器提交数据

B、与POST相比,GET的安全性较差,因为GET的请求参数是放在URL上的,而POST则是放在body里面

C、由于GET的请求参数是放在URL上的,所以相比POST来说,GET传输的数据量受限于URL长度,实际传输量取决于浏览器,而理论上传输大小为2KB。POST则不受限制,一般默认不超100K

D、GET请求会被缓存,参数会保留着浏览器历史中,而POST不会。所以要留意当提交表单为GET方法时,浏览器回退,可能导致重复提交表单。

三次握手:

POST请求的过程:

A、浏览器请求tcp连接(第一次握手)
B、服务器答应进行tcp连接(第二次握手)
C、浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
D、服务器返回100 continue响应
E、浏览器开始发送数据
F、服务器返回200 ok响应

GET请求的过程:

A、浏览器请求tcp连接(第一次握手)
B、服务器答应进行tcp连接(第二次握手)
C、浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
D、服务器返回200 ok响应。

关于100-continue:

当我们使用POST请求时,浏览器并不会马上将数据发送到服务器端,而是先向服务端发送一个包含"Expect: 100-continue" 头域的请求信息,意指询问服务器是否接受大数据传输,若服务器拒绝则不会发送数据,只有当服务器正确响应该请求时,浏览器才会真正的将数据发送到服务端。此目的是为了避免服务器拒绝接受大数据时,而浏览器却已经发送了数据过去,导致资源浪费。

关于CURL:

CURL-POST请求一般情况下会直接将数据发送至服务端。
但是当传输的数据量过大时,则会先向服务器发送100-continue,等待服务端响应。
为了避免服务端不能正确响应100-continue的情况,我们可以在请求时,添加一个header信息。
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));

扩展:

1、TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
2、TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
3、 HTTP协议是基于TCP/IP协议的,因此亦可认为POST和GET两种请求也是基于TCP/IP协议的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值