袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

GET\POST请求中URL的最大长度限制

浏览量:1684

由于jsonp跨域请求只能通过get请求,url长度根据浏览器及服务器的不同而有不同限制。

若要支持IE的话,url长度限制为2083字符,若是中文字符的话只有2083/9=231个字符。

若是Chrome浏览器支持的最大中文字符只有8182/9=909个。


1、 GET方法长度限制


在网上查询之后,浏览器和服务器对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字符时依然能正常编辑。


通过上面的数据可知,为了让所有的用户都能正常浏览, URL最好不要超过IE的最大长度限制(2083个字符),当然,如果URL不直接提供给用户,而是提供给程序调用,这时的长度就只受Web服务器影响了。

注:对于中文的传递,最终会为urlencode后的编码形式进行传递,如果浏览器的编码为UTF8的话,一个汉字最终编码后的字符长度为9个字符。

因此如果使用的 GET 方法,最大长度等于URL最大长度减去实际路径中的字符数。


服务器

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




2、  POST方法长度限制


理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力。

如:在Tomcat下取消POST大小的限制(Tomcat默认2M);

打开tomcat目录下的conf目录,打开server.xml 文件,修改

<Connector

debug="0"

acceptCount="100"

connectionTimeout="20000"

disableUploadTimeout="true"

port="8080"

redirectPort="8443"

enableLookups="false"

minSpareThreads="25"

maxSpareThreads="75"

maxThreads="150"

maxPostSize="0"

URIEncoding="GBK"

</Connector>

增加红色字体部分 maxPostSize="0" (设为0是取消POST的大小限制)


打赏