每个浏览器的URL的最大长度是什么?
最大 URL 长度是 HTTP 规格的一部分吗?
每个浏览器的URL的最大长度是什么?
最大 URL 长度是 HTTP 规格的一部分吗?
当前回答
Sitemaps 协议是网站管理员如何向搜索引擎提供有关其网站页面的信息(谷歌在 Webmaster Tools 中也使用),支持不到 2048 个字符的 URL. 因此,如果您计划使用此功能为搜索引擎优化,请注意。
其他回答
似乎Chrome至少已经提高了这个限制,我把2万个字符插入了书架上,它拿走了。
Microsoft 支持表示“Internet Explorer 的最大 URL 长度为 2,083 个字符”。
IE 有更长的URL问题,Firefox 似乎在 >4k 屏幕上工作得很好。
HTTP 1.1 规格说:
HTTP 中的 URI 可以以绝对的形式或与某些已知基础的 URI 相对,取决于它们的使用背景。 两种形式因绝对的 URI 总是以一个序列名称开始而有所区别。 有关 URL 合成和序列的最终信息,请参见“统一资源识别器(URI):通用序列和序列”。
正如 @Brian 提到的那样, HTTP 客户端(例如浏览器)可能有自己的限制,而 HTTP 服务器则会有不同的限制。
我写了这个测试,它继续添加“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>
第一部分
在Chrome中,我得到了:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36
2046
然后,它与:
与 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
第2部分
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
福克斯:
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
15708
此分類上一篇
第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
Android 模拟器
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
在 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;
}