【HTTP】IE的URL的最大长度限制和如何解决URL最大长度的限制

习惯了用户URL传递参数的方便和快捷,然而大多数人并没有了解通过GET方式请求页面并传递一个过长的参数的话,IE浏览器会自动的截取超出最大长度的字符的!
微软的权威解释,IE的url最大长度是2083个字节,可以用于GET传递数据的长度是2048个字节。
Maximum URL length is 2,083 characters in Internet Explorer.
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q208427
那么如何绕开这个最大长度的限制呢,园子里已经有人给出了方法,请参考下面这链接
http://www.cnblogs.com/ppchen/archive/2008/03/18/1109607.html

http://support.microsoft.com/default.aspx?scid=kb;EN-US;q208427

http://blog.csdn.net/jia20003/article/details/8497108



今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的。URL中列出了所有参与该操作的Ticket Id。于是,我想起GET请求是有最大长度限制的。遂输入超长一串Ticket Id进行请求,结果页面报错如下:

HTTP Error 404.15 - Not Found

The request filtering module is configured to deny a request where the query string is too long.

Most likely causes:

  • Request filtering is configured on the Web server to deny the request because the query string is too long.

Things you can try:

  • Verify the configuration/system.webServer/security/requestFiltering/[email protected] setting in the applicationhost.config or web.config file.

Links and More InformationThis is a security feature. Do not change this feature unless the scope of the change is fully understood. You can configure the IIS server to reject requests whose query string is greater than a specified value. If the request‘s query string is greater than the configured value, this error is returned. If the allowed length of the query string needs to be increased, modify the configuration/system.webServer/security/requestFiltering/[email protected] setting.

View more information »

经过一番搜索之后,发现IIS 7对于Query String有长度限制。默认为2048.

该问题的解决办法可以通过修改configuration/system.webServer/security/requestFiltering/[email protected] setting.

<requestLimits maxQueryString="length" />

具体可以查看微软KB: Error message when you visit a Web site that is hosted on a server that is running IIS 7.0: "HTTP Error 404.15 – Not Found"

搜索过程中发现,各浏览器与各Web Server对URL均有长度的限制如下:

在http协议中,其实并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web服务器有关,不一样的浏览器,能接受的最大长度往往是不一样的,当然,不一样的Web服务器能够处理的最大长度的URL的能力也是不一样的。
下面就是对各种浏览器和服务器的最大处理能力做一些说明.

Microsoft Internet Explorer (Browser)
IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。在我的测试中,这个数字得到验证。

微软官方也有说明:

Microsoft Internet Explorer has a maximum uniform resource locator (URL) length of 2,083 characters. Internet Explorer also has a maximum path length of 2,048 characters. This limit applies to both POST request and GET request URLs.
If you are using the GET method, you are limited to a maximum of 2,048 characters, minus the number of characters in the actual path.
However, the POST method is not limited by the size of the URL for submitting name/value pairs. These pairs are transferred in the header and not in the URL.

Firefox (Browser)

对于Firefox浏览器URL的长度限制为65,536个字符,但当我测试时,最大只能处理8182个字符,这是因为url的长度除了浏览器限制外,还会受Web服务器的限制,而我本机使用的是ubuntu apache服务器,最大处理能力为8192个字符(相差10个字符,不知道是什么原因),一旦超过这个长度,服务器就返回如下错误信息。

Safari (Browser)
URL最大长度限制为 80,000个字符。

Opera (Browser)
URL最大长度限制为190,000个字符。

Google (chrome)
url长度一旦超过8182个字符时,出现如下服务器错误:

写道

Request-URI Too Large
The requested URL‘s length exceeds the capacity limit for this server.
Apache/2.2.12 (Ubuntu) Server at 127.0.1.1 Port 80

Apache (Server)
能接受最大url长度为8,192个字符,但我的测试数据是8,182,10个字符,差别不在,数据具体符合。

Microsoft Internet Information Server(IIS)
能接受最大url的长度为16,384个字符。

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

注:可能有些朋友会想当然的认为,如果最大长度限制为2038字符,是不是参数差不多可以传递1000个左右的汉字。这样认为其实是不对的,对于中文的传递,最终会为urlencode后的编码形式进行传递,如果浏览器的编码为UTF8的话,一个汉字最终编码后的字符长度为9个字符。

http://www.cnblogs.com/henryhappier/archive/2010/10/09/1846554.html

时间: 2024-09-29 11:09:36

【HTTP】IE的URL的最大长度限制和如何解决URL最大长度的限制的相关文章

解决url中文参数乱码的问题--解码

<html> <body> <h3 class="projectName" id="projectName"></h3> <script type="text/javascript"> var unitID;    var unitName;    //获取参数的函数    function geturlPara()    {        var url = document.URL;

如何解决url传参导致错误问题

如何解决url传参导致错误问题:如果使用url传并且参数中含有特殊字符的话,那么就会导致一些错误,下面就来介绍一下如何解决此问题.方法很简单,只要使用encodeURI ()函数进行编码即可.如果得到原来的字符串,使用decodeURI()函数即可,这里就不多介绍了.更多相关内容可以参阅js的escape.encodeURI和encodeURIComponent的区别一章节. 原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=97

Atitit.url 汉字中文路径&#160;&#160;404&#160;resin4 resin &#160;解决&#160;&#160;v2 q329

Atitit.url 汉字中文路径  404 resin4 resin  解决  v2 q329 1. Pluginx机制1 2. Code1 3. 参考4 1. 原理 过滤器  ,,拦截jpg  with %的url...read img ,直接输出.. 2. Pluginx机制 //if() if(inied==false ||  new File("c:\\chinese_filename_hook_ini_pertime").exists()) { new Pluginx().

利用IIS7 解决URL访问限制问题

网站可以通过URl直接访问一些不希望被访问的东西, 比如一些图片,js,css等等. 为了解决这个问题看了好多文章,不过毕竟我是新手菜鸟级别的,没有具体的解决方法,真心不知道怎么弄. 今天在看IIS的时候突然发现有一个叫"请求筛选"的东东,点击进入,发现里面可以配置筛选规则, 比如你可以自己添加 "拒绝文件扩展名",那么所有的符合你添加的那个文件扩展名的文件,都不能访问了. 具体: 打开IIS管理器--->点击你想要配置的网站,打开主页---->点击请求

解决URL带中文参数乱码问题

通过配置Tomcat来解决URL代中文参数乱码的问题. 首先打开Tomcat安装目录 打开conf文件夹 打开server.xml,在大约65行的位置,加一个属性 URIEncoding="UTF-8" 这样就支持Url中文参数了.

小记:目标数组的长度不够。请检查 destIndex 和长度以及数组的下限。

异常:System.ArgumentException: 目标数组的长度不够.请检查 destIndex 和长度以及数组的下限.(不好意思忘记截图了) 发生异常的代码如下: var list = new List<Topic>(); Parallel.For(2, totalPage + 1, page => { //AddRange 方法发生异常 list.AddRange(GetTopics(board.BoardID, page)); }); 原因:List<T> 集合

IIS问题解决:URL中制表符引起的Bad Request - Invalid URL

昨天处理好了Google网站管理员中的500错误,今天处理了一些400处理,比如下面的以制表符(tab)结尾的URL: http://www.cnblogs.com/me-sa/archive/2008/05/16/1200329.html%09 http://www.cnblogs.com/JimmyZhang/archive/2007/12/20/1006555.html%09 ... 访问这些URL时,IIS会返回400 bad request的错误: Bad Request - Inva

jquery.ajax的url中传递中文乱码问题的解决方法

jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1 ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符. JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题. 而我们的UTF-8

java.net.Decoder 配合java.net.Encoder使用解决url参数中文乱码问题【2014-11-17】

1.解码规则 //解释一下:解码规则对应着编码规则,类似对称加密算法 //解码规则:1.数字和字母保持原样: 2."."."-"."_"."*"保持原样:"+"号解码为" "(空一格字符串): 3.%xy根据解码编码进行解码: 2.解码方法 //解释一下:解码方法和编码方法差不多 //2个方法:decode(String s)和decode(String s,String enc) //