一尘不染

URL的字符数限制是多少?

html

URL的字符数限制是什么,特别是如果URL是由表单的GET方法形成的。


阅读 1451

收藏
2020-05-10

共1个答案

一尘不染

简短答案-实际上限制为2000个字符

如果您将网址的字符数保持在2000个以下,则它们几乎可以在客户端和服务器软件的任何组合中使用。

如果您要定位特定的浏览器,请参阅下文以了解更多特定限制。

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

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

HTTP协议对URI的长度没有任何先验限制。服务器必须能够处理它们服务的任何资源的URI,并且如果它们提供可以生成此类URI的基于GET的形式,则应当能够处理无限长度的URI。如果URI的长度超出服务器的处理能力,则服务器应返回414(请求URI太长)状态(请参见10.4.15节)。

该RFC已被RFC7230取代,后者是HTTP / 1.1规范的更新。它包含类似的语言,但也建议这样做:

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

…与现实

这就是标准所说的。对于现实中,有上一篇文章boutell.com所讨论什么个人的浏览器和服务器实现将支持(链接进入互联网档案备份)。执行摘要是:

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

(注意:这是2006年写的文章的引文,但2015年IE的使用率下降意味着更长的URL 可以为大多数人使用。但是,IE仍然有局限性…)

Internet Explorer的局限性…

IE8的最大URL长度为2083个字符,看来IE9也有类似的限制。

我已经测试了IE10,并且地址栏仅接受2083个字符。您可以单击一个比此更长的URL,但是地址栏仍将仅显示此链接的2083个字符。

IE Internals博客上有一篇不错的文章,它涉及了一些背景知识。

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

网址<2048个字符以下的搜索引擎…

请注意,允许站点通知搜索引擎可用页面的sitemaps协议在URL中限制为2048个字符。如果您打算使用站点地图,那么将为您确定一个限制!(请参阅下面的Calin-Andrei Burloiu的答案)

从2010年开始,还有一些针对搜索引擎将抓取和编制索引的最大URL长度的研究。他们发现限制为2047个字符,这似乎与站点地图协议规范相关。但是,他们还发现Google SERP工具无法处理超过1855个字符的URL。

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

  • Fastly 8Kb
  • CloudFront 8Kb
  • CloudFlare 32Kb
    (由于在评论中提供了该信息,因此致谢timrs2998)

其他浏览器汇总
我针对配置了非常大的LimitRequestLine和LimitRequestFieldSize的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

这些信息是最新的吗?
这是一个很受欢迎的问题,由于原始研究已有12年的历史,所以我将尝试使其保持最新:截至2020年1月,该建议仍然有效。即使IE11可能接受更长的URL,但较旧的IE安装的普遍存在以及搜索引擎的限制意味着,最好将一般字符数控制在2000个字符以内。

2020-05-10