URL/URI最大长度是多少

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URL/URI最大长度是多少相关的知识,希望对你有一定的参考价值。

下面就是对各种浏览器和服务器的最大处理能力做一些说明.
Microsoft Internet Explorer (Browser)
IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。在我的测试中,这个数字得到验证。
Firefox (Browser)
写道Bad Request
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.
??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个左右的汉字。
参考技术A 可以私聊我~

在 Internet Explorer 中使用同步可插入协议的自定义 url 协议的最大长度是多少?

【中文标题】在 Internet Explorer 中使用同步可插入协议的自定义 url 协议的最大长度是多少?【英文标题】:What is the maximum length of a custom url protocol using synchronous pluggable protocols in internet explorer? 【发布时间】:2012-02-19 12:34:11 【问题描述】:

我在 Internet Explorer 中遇到了超过 508 个字符的应用程序协议的硬限制。此限制在其他浏览器、chrome 等中不强制执行...

MSDN(1) 上的文档似乎没有提及 URI 的特定于方案部分的最大允许长度或包括方案在内的总长度。

508 个字符远低于 IE 中 URL 的一般限制,报告为 2083 个字符 (2)。

有谁知道这是否是预期的行为,我使用的是 IE8,或者我这里有什么问题?

参考资料:

Asynchronous Pluggable Protocols

Maximum URL length is 2,083 characters in Internet Explorer

【问题讨论】:

【参考方案1】:

我最近遇到了同样的问题,并提出了以下解决方案。如果您尝试像这样直接分配 URL:

 document.location.href = theUrlWithTheCustomProtocol;

您将遇到此 508 个字符限制错误,并且在 IE8 中您将收到一个 JavaScript 错误,说明“传递给系统调用的数据区域太小”。

为了解决这个问题,我从上面的代码切换到使用 JQuery 创建一个隐藏的 iframe,如下所示:

// Remove old frame
$('#hiddenIFrame').remove();

// Add new one
$('<iframe />', 
    'id': 'hiddenIFrame',
    'name': 'hiddenIFrame',
    'src': theUrlWithTheCustomProtocol,
    'style': 'display: none;'
).appendTo("body");

这可以使用 document.location.href 绕过 IE 508 字符限制,并且此解决方案适用于 IE、FireFox、Chrome 和 Safari。

【讨论】:

在我的测试中,这会将 IE 9–11 中的字符数限制增加到 2,046 个。 (奇怪的是,在 IE 8 中它是 2,047 个字符。)这只是增加了 4 倍,但在某些情况下就足够了。很棒的发现。 看起来 2040 个字符现在至少可以在 Chromium 浏览器中使用 window.location.href。对我来说这是在 Windows 上 - 想知道在其他平台上是否有任何不同?【参考方案2】:
508 + some bookkeeping = 512 bytes

我认为浏览器在拆分协议后,会将其存储在一个固定大小的临时缓冲区中。为什么,我不知道,这似乎是将来可能会改变的行为。不要指望它。

我也想知道为什么你需要这么长的协议。即使GUID 以十六进制数字加破折号表示时也只有 36 个字符。

【讨论】:

以上是关于URL/URI最大长度是多少的主要内容,如果未能解决你的问题,请参考以下文章

GET/POST 请求参数长度的最大值

GET请求的长度限制?

apache 的最大 url 长度是多少?

URL 路径中的段的安全最大长度应该是多少?

您可以传递给 Wininet 函数 HttpOpenRequest 的最大 URL 长度是多少?

在 Internet Explorer 中使用同步可插入协议的自定义 url 协议的最大长度是多少?