每个浏览器的URL的最大长度是什么?
最大 URL 长度是 HTTP 规格的一部分吗?
每个浏览器的URL的最大长度是什么?
最大 URL 长度是 HTTP 规格的一部分吗?
当前回答
为什么Internet Explorer仅限于2K,而IIS则限于16K?我不认为有意义。
所以我想开始一个关于Ajax要求URL大小限制的实验。
我设置了我的Tomcat HTTP连接器的maxHttpHeaderSize="1048576". 并准备了一个非常长的URL。
然后我发送一个请求与长的URL如下:
var url="/ajax/url-length.jsp";
jQuery.ajax(url,{data:{q:"0".repeat(1048000-url.length-4)}});
jQuery 报告完成. Tomcat 报告所要求的 URL 是 1048015 位元. 它是用 Chrome 50 和 Internet Explorer 11 测试的。
因此,网页浏览器不会故意在发送 Ajax 请求时破坏或限制您的 URL。
其他回答
我有 SharePoint 2007, 2010 的经验,在 SharePoint 中,您可以从服务器侧创建的 URL 长度的限制,所以它主要取决于 1) 客户端(浏览器、版本和操作系统) 和 2) 服务器技术、 IIS、Apache 等。
Microsoft 支持表示“Internet Explorer 的最大 URL 长度为 2,083 个字符”。
IE 有更长的URL问题,Firefox 似乎在 >4k 屏幕上工作得很好。
URI RFC(其中URL是子组)不确定最大长度,但是,它建议主机名称部分的URI(如适用)不超过255个字符的长度:
URI 制造商应该使用符合 DNS 合成的名称,即使使用 DNS 并非立即显而易见,并且应该限制这些名称的长度不超过 255 个字符。
然而,正如其他文章所指出的那样,一些浏览器对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;
}
似乎Chrome至少已经提高了这个限制,我把2万个字符插入了书架上,它拿走了。