当前位置: 首页 > 面试题库 >

URL的字符数限制是多少?

慕朝明
2023-03-14
问题内容

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


问题答案:

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

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

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

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

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

HTTP协议对URI的长度没有任何先验限制。服务器必须能够处理它们服务的任何资源的URI,并且如果它们提供可以生成此类URI的基于GET的形式,则应当能够处理无限长度的URI。如果URI的长度超出服务器的处理能力,则服务器应返回414(html" target="_blank">请求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个字符以内。



 类似资料:
  • 问题内容: 我希望能够限制文本区域中的字符数。我使用的方法在Google Chrome浏览器中效果很好,但是在Firefox中运行缓慢,在IE中不起作用。 Javascript: HTML: 正文元素底部的Javascript: 问题答案: 我发现了一个很好的解决方案,如果浏览器支持,则使用maxlength属性,并在不支持的浏览器中回退到不引人注意的javascript pollyfill。 H

  • 问题内容: 我想知道我可以发送到SQL Server的UNION SELECT语句的数量是否受到限制?在一条SQL语句中,我最多可能要完成36个操作,因此它变得相当长,从字符角度来看。(而且,其中每个带有ASE WHEN语句的SELECT语句本身都有些复杂。) 问题答案: 从SQL 2008 BOL “ Transact-SQL语句中可以出现任意数量的UNION运算符” 同样来自MSDN “ SQ

  • 问题内容: 我想设置一个最大长度,以使你输入的字符不能超过限制。这是我到目前为止的代码… 有什么简单的方法可以限制字符数? 问题答案: 你可以执行以下操作(从此处获取): 编辑:看看这个以前的SO职位。你可以拦截按键事件,并根据文本字段中的当前字符数添加/忽略它们。

  • 问题内容: 请看下面的代码。 在这里,我试图将字符数限制为5。好,当达到5时,它将不再插入任何字符,但实际情况是,它也不允许删除插入的字符,进行替换或其他操作。如何解决这个问题? 问题答案: 只需更改您当前的删除方法: 为此: 现在应该可以了。

  • 问题内容: 如何限制在JTextField中输入的字符数? 假设我要输入最多5个字符。此后,不能输入任何字符。 问题答案: 然后 (谷歌的第一个结果)

  • 问题内容: 我需要在日志的末尾创建一个汇总表,其中包含在类内部获取的一些值。该表需要以固定宽度格式打印。我已经有执行此操作的代码,但是我需要将String,double和ints限制为在代码中硬编码的固定宽度大小。 因此,假设我要使用 如果值超过此宽度,则需要截断最后一个字符。因此,例如: 需要打印的字符串应为: 我想我需要在构造函数中执行一些操作,以强制字符串不超过一定数量的字符。我可能会将双精