发布网友 发布时间:2023-03-28 03:14
共1个回答
热心网友 时间:2023-10-25 12:54
大家都知道http 中 存在 GET 和 POST 这两种最常用的请求方式。(PUT,DELETE不在本文讨论范围之内)
误解:HTTP 协议下的 Get 请求参数长度是有大小*的,最大不能超过XX,而 Post 是无*的。
1、首先即使有长度*,也是*的是整个 URI 长度,而不仅仅是你的参数值数据长度。
2、HTTP 协议从未规定 GET/POST 的请求长度*是多少。
**以下内容摘自 《关于 HTTP GET/POST 请求参数长度最大值的一个理解误区》 , 文章时间为 2013年的。可能以当前最新的浏览器有出入 **
3、所谓的请求长度*是由浏览器和 web 服务器决定和设置的,各种浏览器和 web 服务器的设定
均不一样,这依赖于各个浏览器厂家的规定或者可以根据 web 服务器的处理能力来设定。
IE 和 Safari 浏览器 * 2k
Opera *4k
Firefox * 8k(非常老的版本 256byte)
如果超出了最大长度,大部分的服务器直接截断,也有一些服务器会报414错误。
** 以下内容摘自 《GET请求中URL的最大长度*总结》 , 文章内容是 2016年9月,相对比较符合当前的最新现状。 **
在网上查询之后,浏览器和服务器对url长度都有*,现总结如下。
1、IE
IE浏览器(Microsoft Internet Explorer) 对url长度*是2083(2K+53),超过这个*,则自动截断(若是form提交则提交按钮不起作用)。
2、firefox
firefox(火狐浏览器)的url长度*为 65 536字符,但实际上有效的URL最大长度不少于100,000个字符。
3、chrome
chrome(谷歌)的url长度*超过8182个字符返回本文开头时列出的错误。
4、Safari
Safari的url长度*至少为 80 000 字符。
5、Opera
Opera 浏览器的url长度*为190 000 字符。Opera 9 地址栏中输入190 000字符时依然能正常编辑。
1、Apache
Apache能接受url长度*为8 192 字符
2、IIS
Microsoft Internet Information Server(IIS)能接受url长度*为16 384个字符。
这个是可以通过修改的(IIS7)
configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryStringsetting.<requestLimits maxQueryString="length"/>
3、Perl HTTP::Daemon
Perl HTTP::Daemon 至少可以接受url长度*为8000字符。Perl HTTP::Daemon中*HTTP request headers的总长度不超过16 384字节(不包括post,file uploads等)。但当url超过8000字符时会返回413错误。
这个*可以被修改,在Daemon.pm查找16×1024并更改成更大的值。
4、ngnix
可以通过修改配置来改变url请求串的url长度*。
client_header_buffer_size 默认值:client_header_buffer_size 1k
large_client_header_buffers默认值 :large_client_header_buffers 4 4k/8k