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

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


当前回答

在 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;
}

其他回答

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

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

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

限制请求线指令设置一个URL的最大长度. 默认情况下,它设置为8190,这给了你很多空间. 但是,其他服务器和一些浏览器,限制长度更多。

由于所有参数都在URL线上通过,隐藏的字段密码中的项目也将在URL上显示,当然,手机也不应该用于真正的安全措施,最好考虑到化妆品安全。

我有 SharePoint 2007, 2010 的经验,在 SharePoint 中,您可以从服务器侧创建的 URL 长度的限制,所以它主要取决于 1) 客户端(浏览器、版本和操作系统) 和 2) 服务器技术、 IIS、Apache 等。

HTTP 1.1 规格说:

HTTP 中的 URI 可以以绝对的形式或与某些已知基础的 URI 相对,取决于它们的使用背景。 两种形式因绝对的 URI 总是以一个序列名称开始而有所区别。 有关 URL 合成和序列的最终信息,请参见“统一资源识别器(URI):通用序列和序列”。

正如 @Brian 提到的那样, HTTP 客户端(例如浏览器)可能有自己的限制,而 HTTP 服务器则会有不同的限制。

根据 HTTP 规格,没有限制一个 URL 的长度. 保持您的 URL 低于 2048 个字符; 这将确保 URL 工作在所有客户端和服务器配置. 此外,搜索引擎如 URL 保持低于大约 2000 个字符。