ChatGPT解决这个技术问题 Extra ChatGPT

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

不同浏览器中 URL 的最大长度是多少?浏览器之间有区别吗?

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

FWIW,对于 Windows 用户,超过 250 个字符的服务器路径可能在构建 URL 时会造成麻烦,例如,请参阅 forums.asp.net 上的 HttpContext.Current.Server.MapPath fails for long file names。底线:如果一项限制对您没有影响,那么另一项限制可能
来自 support.microsoft.com/kb/208427“Internet Explorer 中的最大 URL 长度为 2,083 个字符”
请问你为什么需要知道这个?即拥有长 URL 的用例是什么?
@Lohoris:如果表单使用 get 而不是 post,则为填写的表单所到达的页面添加书签将捕获输入的信息。在某些情况下,这可能很糟糕,但在其他情况下,它可能很有用。然而,要使其工作,浏览器必须能够处理包含所有信息的 URL。
@Lohoris 当我们编写页面以生成报告时,我们使用了标准表单。在某些报告中,能够通过电子邮件将 url 发送给具有内置标准的人很有用。根据报告,我们有时被迫使用 post 或标准被截断。只是另一个用例。

P
Paul Dixon

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

如果您将 URL 保持在 2000 个字符以下,它们几乎可以在客户端和服务器软件的任何组合中工作。

如果您针对特定浏览器,请参阅下文了解有关特定限制的更多详细信息。

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

RFC 2616(超文本传输协议 HTTP/1.1)第 3.2.1 节说

HTTP 协议对 URI 的长度没有任何先验限制。服务器必须能够处理它们所服务的任何资源的 URI,并且如果它们提供可以生成此类 URI 的基于 GET 的表单,则应该能够处理无限长度的 URI。如果 URI 比服务器可以处理的长(参见第 10.4.15 节),服务器应该返回 414(Request-URI Too Long)状态。

该 RFC 已被 RFC7230 废弃,这是对 HTTP/1.1 规范的更新。它包含类似的语言,但也继续建议:

在实践中发现了对请求行长度的各种特殊限制。建议所有 HTTP 发送方和接收方至少支持 8000 个八位字节的请求行长度。

...和现实

这就是标准所说的。对于现实,有一篇关于 boutell.com 的文章(链接到 Internet 存档备份)讨论了各个浏览器和服务器实现将支持的内容。执行摘要如下:

极长的 URL 通常是一个错误。超过 2,000 个字符的 URL 将无法在最流行的 Web 浏览器中使用。如果您打算让您的网站为大多数 Internet 用户服务,请不要使用它们。

(注:这是引自 2006 年写的一篇文章,但 2015 年 IE 的使用量下降意味着更长的 URL 确实适用于大多数人。但是,IE 仍然有限制......)

Internet Explorer 的限制...

IE8's maximum URL length is 2083 chars,似乎是 IE9 has a similar limit

我测试过 IE10,地址栏只接受 2083 个字符。您可以单击比此更长的 URL,但地址栏仍将仅显示此链接的 2083 个字符。

有一个 nice writeup on the IE Internals blog 涉及到这方面的一些背景。

有混合报告 IE11 支持更长的 URL - 请参阅下面的评论。鉴于有些人报告了问题,一般建议仍然有效。

URL 等搜索引擎 < 2048 字符...

请注意,允许网站向搜索引擎通知可用页面的 sitemaps protocol 在 URL 中的字符数限制为 2048 个。如果您打算使用站点地图,我们已经为您确定了限制! (见下文Calin-Andrei Burloiu's answer

从 2010 年开始,还有一些关于 maximum URL length that search engines will crawl and index 的研究。他们发现限制是 2047 个字符,这似乎与站点地图协议规范有关。但是,他们还发现 Google SERP 工具无法处理超过 1855 个字符的 URL。

CDN 有限制

CDN 还对 URI 长度施加限制,并在达到这些限制时返回 414 Too long request,例如:

快速 8Kb

CloudFront 8Kb

CloudFlare 16Kb

(感谢 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 的this answer

这些信息是最新的吗?

这是一个流行的问题,由于最初的研究已有 14 年的历史,我会尽量保持最新:截至 2021 年 1 月,该建议仍然有效。尽管 IE11 可能接受更长的 URL,但旧版 IE 安装的普遍性加上搜索引擎的限制意味着保持在 2000 个字符以下是最好的一般策略。


请注意 IE11 won't bookmark URLs longer than 260 characters。我不确定 Edge 是否有同样的限制。
今天 IE11 将我的 URL 缩减为 2048 个字符。
在 2016 年的 Chrome 中,我已经能够使用简单脚本中的 osx open 命令打开一个包含 260300 个 ascii 字符的 url,并且可以确认所有字符都已传递到服务器。浏览器中的 url 被截断为 32791 个字符,以 ... (%E2%80%A6%E2%80%A6) 结尾
@Paul Dixon 很高兴看到人们愿意在这个网站上回答问题时不遗余力。显然,人们对当前的投票数为 3734 表示感谢,但我想说声谢谢! :)
在 2020 年更新中提及任何版本的 IE 都是……奇怪。
S
Steve Konves

我遇到的最长网址是 data URLs

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

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

他说的是 base64 编码的 jpeg 在技术上是一个 URL,因为它被指定为 data:*。虽然他说这是一个有效的 URL 是正确的,但我认为这不是问题所在。
...或者只是将其粘贴到您的地址栏中。
因为数据 URL 包含协议“数据:”和标识符,所以您需要找到该“文件”(即使“文件系统”是所有可能文件的空间)。因此它是一个 URL,它也是一个 URI。 (但绝对不是“不是 URL”)
@DoubleGras Google Chrome for Mac 不允许我将这么长的 URL 粘贴到我的地址栏中
谢谢(你的)信息。我刚刚在 Firefox 和 Chrome、Windows 上测试成功。所以......这完全取决于;)
F
Frederik Struck-Schøning

我编写了这个测试,不断将 '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

第2部分

我进入了简单模式并added additional limits to IISExpress applicationhost.configweb.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

第三部分

Added

<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

Internet Explorer 8 因 iexplore.exe 崩溃而失败。

https://i.stack.imgur.com/nF4av.png

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

所以,实际上,我对 512 个字符的假设在很大程度上是错误的 ^_^ 感谢您的测试。我再也不会关心查询参数的长度了..
这应该是公认的答案......第一个实际上并没有为每个浏览器提供硬性限制,这是问题所要求的。
可能也值得研究 Safari。 Safari 是唯一不支持客户端生成下载的浏览器。解决方法是:a) 在新窗口中打开 BLOB URI(指向内存中 Blob 的短临时 URI),b) 在新窗口中打开 base-64 编码数据 URI(可能很长,但支持哑剧打字)。此处的详细信息:github.com/eligrey/FileSaver.js/issues/12
@Vaitkevicius 你知道空格(%20)是一个字符还是三个?
@Jun 取决于在哪里...按 F12 并将以下内容粘贴到控制台 console.log("%20".length +" "+decodeURI("%20").length) 这应该可以解释
B
Brian

WWW FAQs: What is the maximum length of a URL? 根据经验测试和研究有自己的答案。简短的回答是超过 2048 个字符会使 Internet Explorer 不开心,因此这是您应该使用的限制。请参阅页面以获得长答案。


w
web marketing strategies provi

实际上没有通用的最大 URL 长度。最大长度仅取决于客户端浏览器选择支持的内容,差异很大。 2,083 限制仅存在于 Internet Explorer(7.0 之前的所有版本)中。 Firefox 和 Safari 的最大长度似乎是无限的,尽管 URL 达到大约 65,000 个字符时会出现不稳定。 Opera 似乎没有任何最大 URL 长度,并且在极长的长度下也不会受到不稳定的影响。


如果不稳定性在 65k 左右,它可能就在 65535 (2^16 - 1) 附近。也许他们使用短 i 遍历字符?只是一个想法。我想知道他们为 65k+ o_o 测试了什么 URL;;
这个答案也许应该被接受,因为它提供了具体的答案:IE 为 2k,Safari/Firefox 为 65k,Opera 为“更多”。
我很好奇。 65k URL 是数据方案 URI 还是真正意义上的经典 URL?
我猜不稳定性是/是由用于呈现地址栏的 API 引起的。许多操作系统库无法处理过长的字符串以可接受的性能呈现在显示器上。
C
Cœur

在 Apple 平台 (iOS/macOS/tvOS/watchOS) 上,限制可能是 2 GB 长的 URL 方案,如 this comment in the source code of Swift 所示:

// 确保 URL 字符串不会太长。 // 我们将其限制为 2GB,以便使用 NS/CFURL 向后兼容 32 位可执行文件 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;
}

您先生应该为尝试 300MB URL 的努力而获得 +1
iOS 本身并不是浏览器。这是在 Safari for iOS 中吗?
@Randall 方案由操作系统处理,然后分派到可以打开它们的应用程序。所以 iOS 上的所有应用程序,包括 Safari,都可以处理长 URI。
感谢您的澄清。不过,据推测,这不会阻止任意应用程序(例如 Tor 驱动的浏览器)引入自己的长度限制,对吗?
C
Community

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

URI 生产者应该使用符合 DNS 语法的名称,即使 DNS 的使用不是很明显,并且应该将这些名称的长度限制为不超过 255 个字符。

不过,正如其他帖子中所指出的,某些浏览器对 URL 的长度有实际限制。


G
Greg

HTTP 1.1 specification 说:

HTTP 中的 URI 可以以绝对形式表示,也可以相对于某些已知的基本 URI [11] 表示,具体取决于它们的使用上下文。这两种形式的区别在于绝对 URI 总是以方案名称开头,后跟冒号。有关 URL 语法和语义的明确信息,请参阅“统一资源标识符 (URI):通用语法和语义”,RFC 2396 [42](替换 RFC 1738 [4] 和 RFC 1808 [11])。本规范采用了该规范中“URI-reference”、“absoluteURI”、“relativeURI”、“port”、“host”、“abs_path”、“rel_path”和“authority”的定义。 HTTP 协议对 URI 的长度没有任何先验限制。服务器必须能够处理它们所服务的任何资源的 URI,并且应该能够处理无限长度的 URI,如果它们提供可以生成此类 URI 的基于 GET 的表单。* 服务器应该返回 414(请求 URI 太长)如果 URI 长于服务器可以处理的长度,则状态(请参阅第 10.4.15 节)。注意:服务器应该谨慎对待超过 255 字节的 URI 长度,因为一些较旧的客户端或代理实现可能无法正确支持这些长度。

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


T
TRiG

Microsoft Support 显示“Internet Explorer 中的最大 URL 长度为 2,083 个字符”。

IE 的 URL 长度比这更长。 Firefox 似乎可以很好地处理 >4k 字符。


P
Paul Morgan

URL as UI 中,Jakob Nielsen 建议:

当用户想要相互推荐网页时,Web 的社交界面依赖于电子邮件,而电子邮件是用户访问新网站的第二常见方式(搜索引擎是最常见的):确保您网站上的所有 URL站点的长度少于 78 个字符,因此它们不会换行。

这不是最大值,但如果您希望共享 URL,我会认为这是一个实际的最大值。


我想知道“78”是从哪里来的?也许那篇 1999 年的原始文章是在假设人们在 80x24 终端窗口中阅读电子邮件的假设下编写的?不过,很好的建议!
出色地。 IBM打孔卡也是80列。用回车和换行占据两个字符,你得到 78。
哈哈。 :-) 我实际上是在考虑在我的评论中引用 1981 年的 80x25 CGA 显示器,但你的反应更远了! ...我不在打孔卡时代,但它们是 80 字节,还是只有 80 位?
不完全是一个字节(8 位)。它在每一列中编码一个字符。
@JonSchneider - 78 非常具体,可能与文本的可读性有关(从 Nielsen 的背景的可用性角度来看),最好在 50-60, and a maximum of 75 之间。
H
HoldOffHunger

Sitemaps protocol 是网站管理员向搜索引擎告知其网站上的页面的一种方式(Google 也在网站管理员工具中使用),支持少于 2048 个字符的网址。因此,如果您打算将此功能用于搜索引擎优化,请考虑到这一点。


这有点令人困惑。站点地图协议“支持少于 2048 个字符的 URL”。我想像 example.com 这样的网站会起作用。我认为这个问题更多的是关于最大值?
P
Peter Mortensen

ASP.NET 2 和 SQL Server 报告服务 2005 的限制为 2028。我发现这一点很难,我的动态 URL 生成器不会将某些参数传递给超出该点的报告。这是在 Internet Explorer 8 下。


P
Peter Mortensen

为什么 Internet Explorer 的限制只有 2K,而 IIS 的限制是 16K?我不认为这是有道理的。

所以我想开始一个关于 Ajax 请求 URL 大小限制的实验。

我已经设置了我的 Tomcat HTTP 连接器的 maxHttpHeaderSize="1048576"。并准备了一个很长的网址。

然后我发送一个带有长 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 进行了测试。

因此,Web 浏览器在发送 Ajax 请求时不会故意截断或限制您的 URL。


当您考虑到并非所有对 Web 服务器的请求都是通过浏览器完成时,Internet Explorer 和 IIS 之间的差异是有意义的。
A
Acey

限制请求行指令设置 URL 的最大长度。默认情况下,它设置为 8190,这为您提供了很大的空间。然而其他服务器和一些浏览器,则更多地限制了长度。

由于所有参数都在 URL 行中传递,因此隐藏字段密码中的项目当然也会显示在 URL 中。这两款手机都不应该用于真正的安全措施,充其量只能被视为表面安全。


w
wibberding

看来 Chrome 至少提高了这个限制。我将 20,000 个字符粘贴到小书签中,然后它就接受了。


P
Peter Mortensen

我有使用 SharePoint 2007、2010 的经验,在这种情况下,您可以从服务器端创建的 URL 的长度是有限的,因此它主要取决于,1)客户端(浏览器、版本和操作系统)和 2)服务器技术、IIS、Apache 等。


由于 SharePoint 将 Web URL 公开为文件路径,因此会遇到一个单独的限制:Windows 文件路径长度限制为 260 个字符(或使用 API 时为 248 个字符)。有关此限制的更多详细信息,请查看此处的“最大路径长度限制”部分:msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
A
Anoop Gupta

根据 HTTP 规范,对 URL 的长度没有限制。将您的网址保持在 2048 个字符以下;这将确保 URL 在所有客户端和服务器配置中都有效。此外,搜索引擎喜欢将 URL 保持在大约 2000 个字符以下。