Loading... <h3 align="left">HTTP1.0的格式</h3> <p>request(HTTP请求消息)<br />结构:一个请求行.部分消息头,以及实体内容,其中的一些消息内容都是可选择的.消息头和实体内容之间要用空行分开.</p> <p>GET /index.html HTTP/1.1 //请求头,下面都是消息头.<br />Accept: */*<br />Accept-Languang:en-us<br />Connection:keep-alive<br />Host:localhost<br />Referer:HTTP://localhost/index.html<br />User-Agent:Mozilla/4.0<br />Accept-Encoding:gzip,deflate//到上面都是消息头,下面一个空行表示完了,接下来是实体内容.</p> <p><strong>Response响应消息头</strong></p> <p><strong>在接收并解析请求消息后,服务器以 HTTP 响应消息响应。相当服务器对客户的http的回应</strong><br />结构:一个状态行.部分消息</p> <p>头,以及实体内容,其中的一些消息内容都是可选择的.消息头和实体内容之间要用空行分开.</p> <p>HTTP/1.1 200ok //状态行.下面为消息头<br />Server:Apache2.2<br />Date:Thu, 13 Jul 2008 16:29:46 GMT<br />Content-Length:2222<br />Content-Type:text/html<br />Cache_control:private //和请求消息头一样下面有一个空行</p> <p>注意:使用get的方法的请求消息中是不能包含实体内容的,只有使用post,put和delete的方法请求消息中才能有实体内容.对 HTTP1.1来讲,如果HTTP中有实体内容,但没有使用权chunked传输编码.那么消息头部分必须包含内容长度字段.不然不知什么时候内容才结 束。HTTP1.1中一定要有host字段</p> <p>以上消息头的结构:每个消息头都包含一个头字段名称,然后依次是冒号,空格值,回车和换行符,字段不区分大小写.对消息头中的消息头可以任何顺序排列.<br />消息头可以分为信息头,请求头,响应头,实体头四类<br />如果有多个选项,可以用逗号分隔Accept-Encoding:gzip ,deflate</p> <h3>1. URL长度限制</h3> <p>在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的,HTTP协议并不对URI的长度做任何的限制,服务器端必须能够处理任何它们所提供服务多能接受的URI,并且能够处理无限长度的URI,如果服务器不能处理过长的URI,那么应该返回414状态码。</p> <p>虽然Http协议规定了,但是Web服务器和浏览器对URI都有自己的长度限制。</p> <p>服务器的限制:我接触的最多的服务器类型就是Nginx和Tomcat,对于url的长度限制,它们都是通过控制http请求头的长度来进行限制的,nginx的配置参数为large_client_header_buffers,tomcat的请求配置参数为maxHttpHeaderSize,都是可以自己去进行设置。</p> <p>浏览器的限制:每种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)</p> <p>IE : 2803</p> <p>Firefox:65536</p> <p>Chrome:8182</p> <p>Safari:80000</p> <p>Opera:190000</p> <p>对于get请求,在url的长度限制范围之内,请求的参数个数没有限制。</p> <h3>2. Post数据的长度限制</h3> <p>Post数据的长度限制与url长度限制类似,也是在Http协议中没有规定长度限制,长度限制可以在服务器端配置最大http请求头长度的方式来实现。</p> <h3>3. Cookie的长度限制</h3> <p>Cookie的长度限制分这么几个方面来总结。</p> <p>(1) 浏览器所允许的每个域下的最大cookie数目,没有去自己测试,从网上找到的资料大概是这么个情况</p> <p>IE :原先为20个,后来升级为50个</p> <p>Firefox: 50个</p> <p>Opera:30个</p> <p>Chrome:180个</p> <p>Safari:无限制</p> <p>当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。</p> <p>(2) 浏览器所允许的每个Cookie的最大长度</p> <p>Firefox和Safari:4079字节</p> <p>Opera:4096字节</p> <p>IE:4095字节</p> <p>(3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。</p> <h3>4. Html5 LocalStorage</h3> <p>Html5提供了本地存储机制来供Web应用在客户端存储数据,尽管这个并不属于Http协议的一部分,但是随着Html5的流行,我们可能需要越来越多使用LocalStorage,甚至当它普及的时候跟它打交道就会同今天我们跟Cookie打交道一样多。</p> <p>对于LocalStorage的长度限制,同Cookie的限制类似,也是浏览器针对域来限制,只不过cookie限制的是个数,LocalStorage限制的是长度:</p> <p>Firefox\Chrome\Opera都是允许每个域的最大长度为5MB</p> <p>但是这次IE比较大方,允许的最大长度是10MB</p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信