不同浏览器中URL的最大长度是多少?

5688
  • 每个浏览器的URL的最大长度是多少?
  • 最大URL长度是否是HTTP规范的一部分?

47
就Windows用户而言,路径超过250个字符可能会导致构建URL时出现问题,例如请参考位于forums.asp.netHttpContext.Current.Server.MapPath fails for long file names。简而言之,如果一个限制没有阻止你,那么另一个限制可能会。 - gerryLowry
29
根据http://support.microsoft.com/kb/208427,“Internet Explorer中URL的最大长度为2,083个字符”。 - gavenkoa
12
我可以问一下,你为什么需要知道这个?也就是说,拥有一个长URL的用例是什么? - o0'.
27
如果一个表单使用 get 而不是 post,那么收藏已填写表单的页面将捕获输入的信息。在某些情况下,这可能是不好的,但在其他情况下它可能会很有用。但是,这要求浏览器能够处理包含所有信息的 URL。 - supercat
5
当我们编写生成报告的页面时,我们使用一个条件表单。有时候,在某些报告中,能够将带有筛选条件的URL通过电子邮件发送给其他人是很有用的。取决于报告,我们有时被迫使用“post”方法,否则筛选条件就会被截断。这只是另一个使用案例。 - buzzsawddog
显示剩余4条评论
19个回答

5923

简短回答 - 实际上的字符限制为2000个

如果您将URL保持在2000个字符以下,它们将在几乎任何客户端和服务器软件以及任何搜索引擎中正常工作。

对于特定的用例,可以考虑使用更长的URL。在搜索引擎之外,截至2023年,8000个字符提供了广泛的兼容性。请继续阅读以获取所有细节...

更长的回答 - 首先,了解标准...

1999年发布的原始HTTP/1.1规范RFC 2616在第3.2.1节中提到:

HTTP协议对URI的长度没有任何先验限制。服务器必须能够处理它们提供的任何资源的URI,并且如果提供了可以生成这样的URI的基于GET的表单,服务器应该能够处理无限长度的URI。如果URI超过服务器能够处理的长度,服务器应返回414(请求URI过长)状态(请参见第10.4.15节)。

在2014年,这个规范被一个更新的规范所取代,主要是为了与实际使用相匹配,RFC 7230;它建议:
各种临时限制请求行长度的做法在实践中被发现。建议所有的HTTP发送方和接收方至少支持8000个八位字节的请求行长度。
在2022年,发布了一个新的更新,独立于HTTP版本(HTTP/1.1,HTTP/2,HTTP/3)定义了HTTP语义。RFC 9110, section 4.1,说道:
建议所有的发送方和接收方至少支持8000个八位字节的协议元素中的URI长度。请注意,这意味着某些结构和在传输过程中的表示(例如HTTP/1.1中的请求行)在某些情况下必然会更大。
...和现实情况
这就是“标准”所说的。至于“现实”,在boutell.com(链接指向Internet Archive备份)上有一篇文章讨论了各个浏览器和服务器的实现支持情况。执行摘要如下:
极长的URL通常是一个错误。在最流行的网络浏览器中,超过2,000个字符的URL将无法使用。如果您希望您的网站适用于大多数互联网用户,请不要使用它们。
(注意:这是一篇写于2006年的文章的引用,但是在2015年,IE的使用率下降意味着更长的URL对大多数用户来说是可行的。然而,IE仍然有限制...)
Internet Explorer的限制...

IE8的最大URL长度为2083个字符,而IE9有类似的限制

我测试了IE10,地址栏只能接受2083个字符。你可以点击一个超过这个长度的URL,但地址栏仍然只会显示这个链接的2083个字符。

IE Internals博客上有一篇很好的文章,介绍了一些背景知识。

关于IE11是否支持更长的URL,有不同的报道-请参见下面的评论。鉴于一些人报告了问题,一般建议仍然适用。

搜索引擎喜欢长度小于2048个字符的URL...

请注意,站点地图协议允许网站向搜索引擎提供可用页面的信息,但URL的字符限制为2048个字符。如果您打算使用站点地图,那么您需要遵守这个限制!(请参阅下方Calin-Andrei Burloiu的回答
还有一些来自2010年的研究,关于搜索引擎会爬取和索引的最大URL长度。他们发现限制是2047个字符,这似乎与网站地图协议规范有关。然而,他们还发现谷歌的SERP工具无法处理超过1855个字符的URL。

CDNs有限制

CDNs还对URI长度施加限制,当达到这些限制时,将返回414 Too long request错误,例如:

(感谢timrs2998在评论中提供这些信息)

其他浏览器综述

我对配置了非常大的LimitRequestLineLimitRequestFieldSize的Apache 2.4服务器进行了以下测试。
Browser     Address bar   document.location
                          or anchor tag
------------------------------------------
Chrome          32779           >64k
Android          8192           >64k
Firefox          >64k           >64k
Safari           >64k           >64k
IE11             2047           5120
Edge 16          2047          10240

请参阅下面Matas Vaitkevicius的这个答案
这是一个常见的问题,由于原始研究已经有大约14年的历史,我会尽量保持信息的更新:截至2023年9月,建议仍然有效。虽然现代浏览器支持更长的URL,但搜索引擎不支持,因此标题的字符数仍然保持在“2000个字符以下”。

110
请注意,IE11无法收藏超过260个字符的URL(https://connect.microsoft.com/IE/feedbackdetail/view/837865/issue-with-add-to-favorites-in-ie10-and-ie11)。我不确定Edge是否有同样的限制。 - Brian
14
今天IE11将我的URL缩短到2048个字符。 - AntiCZ
27
2016年,在Chrome浏览器中,我能够使用OSX打开命令从一个简单的脚本中打开一个包含260300个ASCII字符的URL,并确认所有字符都传递到了服务器。然而,在浏览器中打开该URL时,只显示了32791个字符并以...(%E2%80%A6%E2%80%A6)结尾。 - Rob Dawson
42
@Paul Dixon 很高兴看到有人愿意在这个网站上超越自己,回答问题。显然,人们正在通过目前的赞数(3734)表达他们的感激之情,但我还是想说声谢谢! :) - drognisep
25
在2020年提到任何版本的IE都有些奇怪。 - Petr Nagy
显示剩余24条评论

220

我遇到的最长的URL是数据URL

来自Google图片搜索结果的示例图像URL(11747个字符)

data:image/jpeg;base64,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

50
他在谈论的是Base64编码的JPEG实际上是一个URL,因为它被指定为"data:*"。虽然他正确地说明了这是一个有效的URL,但我认为这不是问题所询问的内容。 - Fitblip
62
把它复制到你的地址栏中,或者直接粘贴过去。 - Gras Double
75
一个数据URL包含协议"data:"和标识符,这就是你需要用来定位那个“文件”的全部内容(即使“文件系统”是所有可能文件的空间)。因此,它是一个URL,也是一个URI。(但绝对不是“不是URL”)。 - MickLH
7
谷歌 Chrome 浏览器在 Mac 上不能让我将如此长的 URL 粘贴到地址栏中。 - Max Nanasy
2
嗯,这可能被视为一个答案,但很明显OP是在询问使用“http”或“https”方案的URL... - SamB
显示剩余6条评论

212

我编写了这个测试,它会不断向参数中添加'a',直到浏览器无法继续。

C# 部分:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult ParamTest(string x)
{
    ViewBag.TestLength = 0;
    if (!string.IsNullOrEmpty(x))
    {
        System.IO.File.WriteAllLines("c:/result.txt",
                       new[] {Request.UserAgent, x.Length.ToString()});
        ViewBag.TestLength = x.Length + 1;
    }

    return View();
}

视图:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script type="text/javascript">
    $(function() {
        var text = "a";
        for (var i = 0; i < parseInt(@ViewBag.TestLength)-1; i++) {
            text += "a";
        }

        document.location.href = "http://localhost:50766/Home/ParamTest?x=" + text;
    });
</script>

第 1 部分

在 Chrome 上,我看到:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
2046

接着出现了以下错误:

HTTP 错误 404.15 - 未找到。请求筛选模块已配置为拒绝查询字符串过长的请求。

在Internet Explorer 8 和 Firefox中也是如此。

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
2046

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
2046

第二部分

我选择了简单模式,并且在IISExpress的applicationhost.config和web.config中添加了额外的限制,设置maxQueryStringLength="32768"

Chrome failed with message 'Bad Request - Request Too Long

HTTP Error 400. The size of the request headers is too long.

7744个字符后。

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
7744

第三部分

添加了

<headerLimits>
    <add header="Content-type" sizeLimit="32768" />
</headerLimits>

这完全没有帮助。最后,我决定使用 Fiddler 从标头中删除引荐者。

static function OnBeforeRequest(oSession: Session) {
    if (oSession.url.Contains("localhost:50766")) {
        oSession.RequestHeaders.Remove("Referer");
    }

做得很好。

Chrome:字符数达到了15613个。 (我猜这是IIS的16K限制)

然后它再次失败了:

<BODY><h2>Bad Request - Request Too Long</h2>
<hr><p>HTTP Error 400. The size of the request headers is too long.</p>


Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
15613

Firefox:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
15708

Internet Explorer 8无法正常运行,iexplore.exe崩溃。

图片描述

2505个之后发生。

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
2505

安卓模拟器

Mozilla/5.0 (Linux; Android 5.1; Android SDK built for x86 Build/LKY45) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36
7377

互联网浏览器 11

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
4043

互联网浏览器 10

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
4043

互联网浏览器 9

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
4043

1
所以,实际上,我对512个字符的假设大多是错误的^_^感谢测试。我将不再关心查询参数长度了... - Gogol
28
应接受此答案…第一个答案实际上没有为每个浏览器提供硬性限制,而这正是问题所问的。 - GrayedFox
2
也许值得考虑一下Safari。Safari是唯一不支持客户端生成下载的浏览器。解决方法有:a)在新窗口中打开BLOB URI(指向内存Blob的短暂URI),b)在新窗口中打开base-64编码的数据URI(可能非常长,但支持mime类型)。详情请参见:https://github.com/eligrey/FileSaver.js/issues/12 - Mat Gessel
1
你知道空格(%20)算一个字符还是三个字符? - Jun
2
@Jun 取决于... 按下 F12 并将以下内容粘贴到控制台中:console.log("%20".length +" "+decodeURI("%20").length) 这应该能够解释它。 - Matas Vaitkevicius
非常感谢您进行了彻底的检查,并展示了如何从某些浏览器中挤出更多的符号。虽然这可能对大多数开发人员没有实际好处,但这种努力是值得赞扬的,并且在这个背景下了解一些真实的数字也是很好的。 - Ivaylo Slavov

178

WWW FAQs:URL的最大长度是多少?根据实证测试和研究得出了自己的答案。简短的答案是超过2048个字符会令Internet Explorer感到不适,因此这应该是您应该使用的限制。请查看页面获取详细答案。


114
在苹果平台上(iOS/macOS/tvOS/watchOS),URL方案的长度限制可能为2 GB,这是在Swift源代码中这个注释中所描述的。
// Make sure the URL string isn't too long.
// We're limiting it to 2GB for backwards compatibility with 32-bit executables using NS/CFURL
if ( (urlStringLength > 0) && (urlStringLength <= INT_MAX) )
{
...

在iOS上,我已经测试并确认即使是300多MB长的URL也可以被接受。您可以尝试在Objective-C中使用这样一个长的URL:

NSString *path = [@"a:" stringByPaddingToLength:314572800 withString:@"a" startingAtIndex:0];
NSString *js = [NSString stringWithFormat:@"window.location.href = \"%@\";", path];
[self.webView stringByEvaluatingJavaScriptFromString:js];

并在以下情况下捕获成功:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog(@"length: %@", @(request.URL.absoluteString.length));
    return YES;
}

101
您先生的努力值得点赞,仅尝试处理一个大小为300MB的URL就足以证明这一点。 - Дамян Станчев
4
iOS本身并不是一个浏览器。这句话在问你使用的是iOS版的Safari浏览器吗? - Randall
8
@Randall 的方案由操作系统处理,然后分派给能打开它们的应用程序。因此,iOS 上的所有应用程序,包括 Safari,都可以处理长 URI。 - Cœur
2
感谢澄清。不过,这是否意味着任意应用程序(比如一个Tor浏览器)不能引入自己的长度限制呢? - Randall
@Дамян Станчев 如果你深入到协议层面,路径字段可能会包含整个驱动器的内容。因此,在实际应用中,限制是由服务器强加的。 - undefined

109

其实并没有通用的URL最大长度限制。最大长度仅由客户端浏览器选择支持的长度决定,而这个长度差别很大。2083个字符的限制仅存在于Internet Explorer(所有版本均包括7.0)。Firefox和Safari中的最大长度似乎是无限的,但是当URL达到约65,000个字符时会出现不稳定性。 Opera似乎根本没有URL的最大长度限制,并且在极长的长度下也不会出现不稳定。


10
如果不稳定性在65k左右,可能就在65535(2^16-1)附近。也许他们使用短整型i循环遍历字符?只是一个想法。我想知道他们测试了哪个网址超过65k。 - That Realty Programmer Guy
6
这个答案可能是应该被接受的,因为它提供了具体的答案:IE 是 2k,Safari/Firefox 是 65k,Opera 则更多。 - eis
1
我很好奇。65k URL是数据方案URI还是传统意义上的URL? - SaAtomic
我猜测不稳定性是由用于渲染地址栏的API引起的。许多操作系统库无法处理过长的字符串以在显示器上以可接受的性能进行渲染。 - Mikko Rantalainen

74
URI RFC(其中URL是其子集)并没有规定最大长度,但它建议URI的主机名部分(如果适用)不要超过255个字符:

URI生成器应使用符合DNS语法的名称,即使DNS没有立即显现出来,也应将这些名称限制在255个字符以内。

尽管如此,一些浏览器对URL的长度有实际限制,这点需要注意。


57

根据HTTP 1.1规范

在HTTP中,URI可以是绝对形式或相对于某些已知基础URI [11],具体取决于它们的使用上下文。这两种形式的区别在于绝对URI始终以方案名称后跟冒号开头。关于URL语法和语义的明确信息,请参见“统一资源标识符(URI):通用语法和语义”RFC 2396 [42](它替换了RFCs 1738 [4]和RFC 1808 [11])。本规范采用该规范中的“URI-reference”,“absoluteURI”,“relativeURI”,“port”,“host”,“abs_path” ,“rel_path”和“authority”的定义。

HTTP协议不对URI长度施加任何先验限制。服务器必须能够处理它们提供的任何资源的URI,并且如果它们提供可以生成这样的URI的基于GET的表单,则应该能够处理长度无限的URI。* 如果URI超出服务器可处理的范围,则服务器应返回414(请求URI太长)状态(请参见第10.4.15节)。

注意:服务器应谨慎依赖URI长度超过255个字节,因为某些较旧的客户端或代理实现可能不支持这些长度。

正如@Brian所述,HTTP客户端(例如浏览器)可能有自己的限制,而HTTP服务器将具有不同的限制。


48

微软支持表示:“在Internet Explorer中,最大URL长度为2,083个字符。”

如果超过这个长度,IE将会出现问题。Firefox对于超过4k个字符的URL似乎没有问题。


44
URL作为UI 中,Jakob Nielsen建议:

网络的社交接口依赖于电子邮件,因此当用户想要向对方推荐网页时,电子邮件是用户获取新网站的第二常用方式(搜索引擎是最常见的方式):请确保您网站上的所有URL都少于78个字符长度,这样它们就不会跨越换行。

虽然这不是上限,但如果您希望您的URL被分享,我认为这是一个实用的上限。


5
我想知道“78”是从哪来的?也许最初的1999年文章是基于人们在80x24终端窗口中阅读电子邮件这一假设撰写的?不过,这仍然是很好的建议! - Jon Schneider
5
好的,IBM的打孔卡片也是80列。由于回车和换行符占用了两个字符,因此可用字符数为78。 - Paul Morgan
2
哈哈。 :-) 我其实考虑在我的评论中提到1981年的80x25 CGA监视器,但你甚至走得更远了!...我没有经历过穿孔卡片时代,但它们是横向80字节,还是只有80位? - Jon Schneider
3
不完全是一个字节(8位)。它在每一列中编码一个字符。 - Paul Morgan
5
@JonSchneider - "78" 是一个相当具体的数字,可能与文本易读性有关(从尼尔森的背景出发考虑可用性),最佳行长在 [50-60] 之间,最大不超过 75。(参考资料:http://baymard.com/blog/line-length-readability) - Jay Rainey
78来自RFC 2822第2.1.1节的行长度限制:“每行字符不能超过998个字符,且不包括CRLF的情况下应该不超过78个字符。” - user2449151

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接