URL的字符数限制是什么,特别是如果URL是由表单的GET方法形成的。
简短答案-实际上限制为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 ,例如:
其他浏览器汇总 我针对配置了非常大的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个字符以内。