`
vineet
  • 浏览: 19271 次
  • 性别: 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)支持的最大长度是多少?最大支持多少个字符?

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

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

    主要介绍了关于URL最大长度限制的相关资料查证,这里记录一下,方便以后使用。

    随机生成URL

    URL的最大长度为32,即为包含32个子串,子串之间以“.”分割。 第1个子串:形式为顶级域名,如:cn、com、net、org、gov、edu等,从26个英文字母中选取,组成长度为2-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缩短器将能够重定向链接,并保持有关每个链接被访问次数的统计信息。 还具有以查看统计信息。 所有这些数据将存储在数据库中 该...

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

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

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

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

    突破小程序向webview实时传递参数的限制

    其中之一就是小程序不能向内置的webview实时传参,因为只能通过url地址首次传递数过去。官方不开放接口看起来无可奈何。 但是世上无难事儿,只怕有心人,作为一个合格的程序员就应该是一个有心人。

    python实现字符串加密 生成唯一固定长度字符串

    这次的指纹生成方式也是用hash的MD5对目标URL进行加密,生成固定长度的字符串,然后在数据库里面将字段设置成unique,这样的话在保证url固定长度的情况下还能够保证入库后的唯一性,进最大努力避免出现重复的数据。...

    yotta-url:内置在Node中的URL扩展器

    它将使用您的URL并将其扩展为最大允许长度(由浏览器继子强加的2083个字符的限制)。 该引擎具有完善的,可将您的常规http://google.com转换为以下内容 LR0aq2JaMzW6J9FfYco3DZi6bg5R7VzGQfDHVPEckhRD01spJmlt5Qve...

    正则表达式经典实例

    2.13 选择最小和最大重复次数 2.14 消除不必要的回溯 2.15 避免重复逃逸 2.16 检查一个匹配,但不添加到整体匹配中 2.17 根据条件匹配两者之一 2.18 向正则表达式中添加注释 2.19 在替代文本中添加字面文本 ...

    js和php配合的rsa openssl 加密解密函数

    因为密钥长度影响可加密明文的最大长度,所以按文字截取然后加密并base64编码,就这样将每次加密并base64编码候的字符串连接起来,解密的时候每次取出固定字节数(加密任何长度明文都产生固定长度的密文),进行解密...

    开源电子商务平台iWebShop

    5、控制并检测了商品关键词的最大长度。 6、ie6或者ie7在后台网站设置视图中的js错误。 7、修复了找回密码链接地址错误问题。 8、修复了url在伪静态情况下生成sitemap路径错误的bug。 9、修复了浏览器切换引擎...

    网页中实现文本框自校验的标签

    实现文本内容的自动校验,标签属性与普通input相似,使用该标签后无需再考虑数据提交时的据校验问题。 与struts的动态表单需要大量配置校验文本规则相比... (2)可以限定最大长度、最短长度 (3)可以防止内容重复提交

    常用函数合集(持续更新)

    数组最大值 数组最小值 求和 小数点可能会有很多位,这里不做处理,处理了使用就不灵活了 从数组中随机获取元素 清除对象中值为空的属性 到某一个时间的倒计时 随机码 随机返回一个范围的数字 随机产生颜色 获取,...

    Discuz 2.5 SP1 繁体版

    30. 修正后台论坛管理: 板块简介和名字长度问题 31. 修正后台插件管理: 部分图片丢失 32. 修正后台日志管理: 批量主题管理日志连接问题 33. 修正bbcode 解析: 多出来的空格 34. 修正bbcode 解析: 部分代码解析...

    URLEncodingParser:URL 表单编码解析器

    解析器被构建为能够容忍流长度和最大长度要求,例如在 Web 服务器环境中。 在解析Front Controller时,通常有必要且谨慎地以任意长度截断流,以保护应用程序。 这个界面是为这个结果准备的。 该机制是使用状态模式...

    jsp表单验证js文件

    * 最大长度 maxlength="30" * 负小数 datatype="ldouble" * 非负小数 datatype="rdouble" * 负整数 datatype="lint" * 非负整数 datatype="rint" * 最大值 maxdata="1000.45" 注:如果不是数字格式则该条件无效 * ...

Global site tag (gtag.js) - Google Analytics