`
vineet
  • 浏览: 20381 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

URL最大长度问题

 
阅读更多

今天在测试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/requestLimits@maxQueryString 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/requestLimits@maxQueryString setting.

View more information »

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

该问题的解决办法可以通过修改configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryString 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个字符。

分享到:
评论

相关推荐

    关于URL最大长度限制的相关资料查证

    在Web开发和接口调试中,我们常常会遇到关于URL最大长度限制的问题。本文档将从多个方面详细查证和分析URL长度限制的相关知识,包括RFC标准、主流浏览器以及服务器端的限制情况,为以后的使用提供便利。 首先,我们...

    网址(URL)支持的最大长度是多少?最大支持多少个字符?

    主要介绍了网址(URL)支持的最大长度是多少?最大支持多少个字符?本文总结了IIS、apache服务器及浏览器软件Internet Explorer、Firefox、Opera、chrome等主流的浏览器软件支持情况,需要的朋友可以参考下

    URL 长度有限制吗?

    客户端(如浏览器)会设定一个最大长度,防止因过长的URL导致的问题。例如,IE浏览器限制为2083个字符,Opera是4050个字符,Netscape是8192个字符。这是因为URL需要在内存中存储,过长的URL可能会消耗过多资源或超出...

    URL地址以及相关问题

    - **边界值测试**:测试URL长度的最大值和最小值。 - **压力测试**:模拟大量并发请求,观察系统的响应情况。 - **安全测试**:尝试注入恶意代码,评估系统的防御能力。 - **兼容性测试**:在不同浏览器和操作系统下...

    文本限制长度或字符

    5. `jquery插件库.url`:这是一个快捷方式文件,指向一个jQuery插件库的网址,开发者可能在这里找到了用于文本长度验证的插件。 综上所述,这个压缩包的内容可能是一个前端项目,其中涉及到使用jQuery和自定义验证...

    android称长度不符

    1. **字符串资源**:在Android的XML资源文件中定义字符串时,如果字符串过长,可能会超过Android系统允许的最大长度,导致编译错误。系统默认的限制可能因设备和Android版本而异,通常在10000个字符左右。 2. **...

    随机生成URL

    URL的最大长度为32,即为包含32个子串,子串之间以“.”分割。 第1个子串:形式为顶级域名,如:cn、com、net、org、gov、edu等,从26个英文字母中选取,组成长度为2-4个字符的子串,这个可以采取枚举的形式,从...

    net url加密和解密的方法

    2. **URL长度限制**:加密后的URL可能会超过URL的最大长度,需要考虑是否需要分片或使用POST请求。 3. **兼容性**:不同的浏览器和服务器对URL中的特殊字符处理可能不同,加密前需做URL编码。 4. **安全性评估**:...

    微信小程序页面传值小探

    IE6.0 :url最大长度2083个字符,超过最大长度后无法提交。 IE7.0 :url最大长度2083个字符,超过最大长度后仍然能提交,但是只能传过去2083个字符。 firefox 3.0.3 :url最大长度7764个字符,超过最大长度后无法提交。...

    微信小程序页面传值实例分析

    IE6.0 :url最大长度2083个字符,超过最大长度后无法提交。 IE7.0 :url最大长度2083个字符,超过最大长度后仍然能提交,但是只能传过去2083个字符。 firefox 3.0.3 :url最大长度7764个字符,超过最大长度后无法提交。...

    smolink-url_shortener:这是Flask中的简单URL缩短器。 将URL的最大长度缩短为512个字符到6个字符。 使用Flask-SQLAlchemy制作。 该URL缩短器将能够重定向链接,并保持有关每个链接被访问次数的统计信息。 还具有HTTP基本身份验证以查看统计信息。 所有这些数据将存储在sqlite3数据库中

    将URL的最大长度缩短为512个字符到6个字符。 使用Flask-SQLAlchemy制作。 该URL缩短器将能够重定向链接,并保持有关每个链接被访问次数的统计信息。 还具有以查看统计信息。 所有这些数据将存储在数据库中 该...

    js的参数有长度限制吗?发现不能超过2083个字符

    针对文件描述中提到的参数长度问题,其实这与JavaScript函数本身没有直接关系,而是与通过URL传递参数时的限制有关。URL(统一资源定位符)是浏览器用来定位资源的字符串。在使用GET方法通过URL传递参数时,大多数...

    检查网址URL中字符串类型及个数(ASP防注入)

    '参数1: Qstrings 通过 "||" 和 "," 两次拆分,分别获取每一个查询参数 名称,类型(int,string两种),最大长度(0为不限制); '参数2: Qcount 检查参数个数就否一致,boolean型; '参数3: inSql SQL注入检查,...

    discuz!x1.5数据表详细

    - **siteurl**:服务商的官方网站URL,最大长度为255个字符。 - **description**:对服务商的简短描述,最大长度为255个字符。 - **contact**:服务商的联系邮箱地址,最大长度为255个字符。 - **logo**:服务商...

    【数据挖掘】恶意url检测

    SVM是一种强大的二分类模型,通过构造最大边界来分割数据,而Logistic Regression则通过估计概率来判断URL的类别。这两种算法在文本分类问题上都有良好的表现,但它们在处理数据的方式和性能上有所不同。SVM可能对...

    Bloom Filter用于url去重

    Bloom Filter提供了一种有效且节省空间的方式来处理大规模的URL去重问题。通过合理地选择位数组大小和散列函数的数量,可以极大地减少误报率,从而提高系统的整体性能。在实践中,Bloom Filter已经成为处理大规模...

    js中split()方法得到的数组长度问题

    split()方法得到的数组长度问题主要与分隔符的个数有关。具体来说,当使用split()方法分割字符串时,分割后的数组长度是分隔符个数加一。这个规则意味着,如果在字符串中找到n个分隔符,则会得到n+1个数组元素。例如...

    tomcat GET请求与POST请求

    GET请求的大小受到URL长度限制,一般不超过2KB,这意味着它不能携带大量数据。此外,GET请求是幂等的,意味着多次执行同一请求,结果应始终相同,不会改变服务器状态。 POST请求则更复杂,主要用于提交数据以创建或...

    slugify-url:将 url 映射到可用作文件名的简化字符串

    将 url 转换为简化字符串 概要 slugify-url 将 url 映射到一个经过清理... 最大长度默认 100 跳过协议默认为真 skipuserpass 默认为真 例如 =&gt; =&gt; 或者如果 unixOnly 是真的 =&gt; =&gt; 安装 npm install slugify-url

Global site tag (gtag.js) - Google Analytics