• 浅谈 HTTP中Get与Post的区别


    浅谈 HTTP中Get与Post的区别

    存在的误区

    有人说 HTTP 协议下的 Get 请求参数长度是有大小限制的,最大不能超过XX,而 Post 是无限制的,看到这里,我想他们定是看多了一些以讹传讹的博客或者书籍,导致一种理解上的误区:

    1.HTTP 协议从未规定 GET/POST 的请求长度限制是多少。
    2.所谓的请求长度限制是由浏览器和 web 服务器决定和设置的,各种浏览器和 web 服务器的设定均不一样,这依赖于各个浏览器厂家的规定或者可以根据 web 服务器的处理能力来设定。
    
    1.get

    HTTP协议规范没有对URL长度进行限制,但是一般浏览器会限制

    如:IE对URL长度的限制是2083字节(2K+35)。

    首先是"GET方式提交的数据最多只能是1024字节",因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系 了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
    注意这是限制是整个URL长度,而不仅仅是你的参数值数据长度。
    【get方式提交数据的大小,http协议并没有硬性限制;而是与浏览器及服务器、操作系统有关。使用get方式,url最长可达8167b】
    
    2.post
    理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力。
    如:在Tomcat下取消POST大小的限制(Tomcat默认2M);
    
    3.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就只发送一次。
    
  • 相关阅读:
    怎么知道银行卡号对应的银行
    集合排序、map、枚举
    669. Trim a Binary Search Tree修剪二叉搜索树
    17. Merge Two Binary Trees 融合二叉树
    226. Invert Binary Tree 翻转二叉树
    530.Minimum Absolute Difference in BST 二叉搜索树中的最小差的绝对值
    191. Number of 1 Bits 二进制中1的个数
    Hamming Distance二进制距离
    136. Single Number唯一的数字
    276. Paint Fence篱笆涂色
  • 原文地址:https://www.cnblogs.com/jtjianfeng/p/11733418.html
Copyright © 2020-2023  润新知