前端

get & post区别整理

2017-05-28  本文已影响24人  Ann_l

最直观的是 :

get将所要传送的数据,包裹在url中

post则是将数据放入request body中

【get会暴露敏感信息】

本质的区别是,

get和post都是http(基于tcp/ip的关于数据如何在万维网中如何通信的协议)中两种发送请求的方法。

get产生一个tcp数据包,而post产生两个。

对于get请求,浏览器会将『http header与data』一起发送给服务器服务器返回200

post,浏览器会先将『http header』发送至服务器,服务器返回100 continue,浏览器在发送data,服务器响应200,返回数据

【备注】并不是所有浏览器的post都发送两次,例如ff就只发一次。

这个时候想去扯点TCP协议中的三次握手和四次握手


第一次握手:client向server发送请求连接的报文

第二次:server接受连接后回复ack报文

第三次:clinet接收ack报文后向server发送ack报文,并分配资源,这tcp连接就建立了。

【中断连接端可以是client,也可以是server。毕竟谁都可以叫停。上图为分手需要完成的四次握手】

第一次握手:client向server发送中断链接请求,发送FIN报文。表达:我要跟你分手啦,你还有没有什么话要说,如果还有,就不必急着同意,可以继续说,或者发送数据。

第二次握手:发送ACK。表达:我听到你要跟我分手了,但我心有不忍,我要准备一下。请你等等我。【这个时候,client进入fin_wait状态,继续等待server端的fin报文】

第三次握手:server考虑好了,觉得挽留无意。说完要说的话,为client做完要做的事,向cllient发送FIN报文,告诉client,我话都说完,可以为你做的事也做完,放你自由。我准备关闭自己的连接了。

第四次握手:client收到fin报文后,知道server同意分开,但client不相信网络,怕server不知道要关闭,所以发送ack进入time_wait状态,如果server没有收到ack,会重传。server收到ack后,就真的彻底断开连接了。

cliient发送分手的状态:

server发送分手的状态:

最后我还要扯一下ajax总get和post的区别:

get方式:

传送简单的数据,大小控制在1KB以内,数据追加到url中发送。

同时会被客户端浏览器缓存数据,别人可以从浏览器的历史记录中读取客户数据。这多不安全。

post方式:

使用post方式时,将数据放在request body中发送,所以其数据量比get多。

最后:宝宝通常把get用来获取数据,post用于提交数据。

上一篇 下一篇

猜你喜欢

热点阅读