每个浏览器的URL的最大长度是什么?

最大 URL 长度是 HTTP 规格的一部分吗?


当前回答

更长的答案 - 首先,标准...

建议所有 HTTP 发送者和接收者支持,至少,请求线长度为 8000 位元。

事实上,在 boutell.com 上有一篇文章(链接到 Internet Archive 备份)讨论了个人浏览器和服务器实施将支持什么。

(注:这是2006年写的一篇文章的引用,但2015年 IE 的使用量下降意味着更长的 URL 为多数工作。

Internet Explorer 的限制

还有一些研究从2010年到搜索引擎将浏览和索引的最大 URL 长度. 他们发现的限制是 2047 台,看起来与 Sitemap 协议规格相关联. 然而,他们也发现谷歌 SERP 工具不会处理超过 1855 台的 URL。

(信用到 timrs2998 提供此信息在评论中)

浏览器 Roundup

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。

其他回答

WWW FAQs:什么是URL的最大长度?有自己的答案,基于实验测试和研究. 简短的答案是,超过2048个字符使Internet Explorer不快乐,因此这是你应该使用的限制。

Sitemaps 协议是网站管理员如何向搜索引擎提供有关其网站页面的信息(谷歌在 Webmaster Tools 中也使用),支持不到 2048 个字符的 URL. 因此,如果您计划使用此功能为搜索引擎优化,请注意。

在 Apple 平台(iOS/macOS/tvOS/watchOS)上,限制可能是一个 2 GB 长的 URL 格式,如此评论所示,在 Swift 的源代码中:

// 确保 URL 行不太长. // 我们将其限制到 2GB 以使用 NS/CFURL 使用 32 位执行器的背后兼容性,如果((urlStringLength > 0) && (urlStringLength <= INT_MAX) ) {...


在 iOS 上,我已经测试并确认,即使是300MB以上长的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;
}

ASP.NET 2 和 SQL Server 报告服务 2005 具有 2028 年限制,我发现这是一个艰难的路径,我的动态 URL 发明器不会将某些参数转移到超越这一点的报告。

URI RFC(其中URL是子组)不确定最大长度,但是,它建议主机名称部分的URI(如适用)不超过255个字符的长度:

URI 制造商应该使用符合 DNS 合成的名称,即使使用 DNS 并非立即显而易见,并且应该限制这些名称的长度不超过 255 个字符。

然而,正如其他文章所指出的那样,一些浏览器对URL的长度有实用的限制。