GET【得到】 请求与 POST【邮寄】 请求的区别
1、在浏览器进行回退操作时,get请求是无害的,而post请求则会重新请求一次
2、get请求参数是连接在url后面的,而post请求参数是存放在requestbody内的
3、get请求因为浏览器对url长度有限制(不同浏览器长度限制不一样)对传参数量有限制,而post请求因为参数存放在requestbody内所以参数数量没有限制(事实上get请求也能在requestbody内携带参数,只不过不符合规定,有的浏览器能够获取到数据,而有的不能)
get方式提交数据的大小(一般来说1024字节),http协议并没有硬性限制,而是与浏览器、服务器、操作系统有关。
post理论上来说没有大小限制,http协议规范也没有进行大小限制,但实际上post所能传递的数据量根据取决于服务器的设置和内存大小。
长度大小误区:https://blog.csdn.net/weixin_34062155/article/details/117991039
4、因为get请求参数暴露在url上,所以安全方面post比get更加安全
5、get请求浏览器会主动cache,post并不会,除非主动设置
6、get请求参数会保存在浏览器历史记录内,post请求并不会
7、get请求只能进行url编码,而post请求可以支持多种编码方式
8、get请求产生1个tcp数据包,post请求产生2个tcp数据包
9、浏览器在发送get请求时会将header和data一起发送给服务器,服务器返回200状态码,而在发送post请求时,会先将header发送给服务器,服务器返回100,之后再将data发送给服务器,服务器返回200 OK
Get和Post本来是应用层协议
直接看运输层的实现原理,个人觉得其实价值并不大。这道题本意可能不是考察网络协议
1、最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
2、GET和POST是什么?HTTP协议中的两种发送请求的方法。
3、HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
4、GET/POST都是TCP链接
5、GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
-
GET与POST都有自己的语义,不能随便混用。
-
据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
-
并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
参考:https://blog.csdn.net/zlczsw/article/details/91046081
拓展
网络协议 参考:https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE
OSI每层模型有哪些协议:https://zhidao.baidu.com/question/1930074324546654987.html
层次划分 | 划分 |
---|---|
应用层 | DHCP ·DNS · FTP · Gopher · HTTP· SSH Telnet Gateway |
表示层 | TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption |
会话层 | RPC,SQL,NFS,NetBIOS,names,AppleTalk |
传输层 | TCP · UDP · TLS · DCCP |
网络层 | IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP |
数据链路层 | Wi-Fi([IEEE 802.11](https://baike.baidu.com/item/IEEE 802.11)) · WiMAX([IEEE 802.16](https://baike.baidu.com/item/IEEE 802.16)) |
物理层 | 以太网 · 调制解调器 · 电力线通信(PLC) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线等 |
为什么有的请求,浏览器不会在请求头中自动加上 origin?
只要是非同源 或者 POST
请求都会带上Origin
字段
POST: js的post请求
来源:https://www.cnblogs.com/rockmadman/p/6836834.html
同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的。
• 不受同源策略限制的:
1、页面中的链接,重定向以及表单提交是不会受到同源策略限制的。
2、跨域资源的引入是可以的。但是js不能读写加载的内容。如嵌入到页面中的,,,等。