- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
每个浏览器的 URL 的最大长度是多少?
最大 URL 长度是 HTTP 规范的一部分吗?
最佳答案
如果您将 URL 保持在 2000 个字符以下,它们几乎可以在任何客户端和服务器软件的组合中使用。
如果您的目标是特定浏览器,请参阅下文了解有关特定限制的更多详细信息。
RFC 2616 (超文本传输协议(protocol) HTTP/1.1)第 3.2.1 节说
The HTTP protocol does not placeany a priori limit on the length ofa URI. Servers MUST be able to handlethe URI of any resource they serve,and SHOULD be able to handle URIs ofunbounded length if they provideGET-based forms that could generatesuch URIs. A server SHOULD return414 (Request-URI Too Long) status if aURI is longer than the server canhandle (see section 10.4.15).
该 RFC 已被 RFC7230 废弃这是对 HTTP/1.1 规范的更新。它包含类似的语言,但也继续暗示这一点:
Various ad hoc limitations on request-line length are found inpractice. It is RECOMMENDED that all HTTP senders and recipientssupport, at a minimum, request-line lengths of 8000 octets.
标准就是这么说的。对于现实,boutell.com 上有一篇文章(链接转到 Internet Archive 备份),讨论了个别浏览器和服务器实现将支持的内容。执行摘要是:
Extremely long URLs are usually amistake. URLs over 2,000 characterswill not work in the most popular webbrowsers. Don't use them if you intendyour site to work for the majority ofInternet users.
(注意:这是引用自 2006 的一篇文章,但在 2015 年 IE 的使用率下降意味着较长的 URL 确实对大多数人有效。但是,IE还是有局限性...)
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 的报道不一 - 请参阅下面的评论。鉴于一些人报告了问题,一般建议仍然有效。
请注意 sitemaps protocol允许站点将可用页面通知搜索引擎,URL 中的字符数限制为 2048 个。如果您打算使用站点地图,我们已经为您确定了一个限制! (参见下面的 Calin-Andrei Burloiu's answer)
2010 年也有一些关于 maximum URL length that search engines will crawl and index 的研究.他们发现限制是 2047 个字符,这似乎与站点地图协议(protocol)规范有关。然而,他们也找到了谷歌 SERP该工具无法处理超过 1855 个字符的 URL。
CDN 也对 URI 长度施加了限制,当达到这些限制时将返回一个 414 Too long request
,例如:
(感谢 timrs2998 在评论中提供该信息)
我针对配置有非常大 LimitRequestLine 的 Apache 2.4 服务器测试了以下内容和 LimitRequestFieldSize .
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
另见 this answer来自下面的 Matas Vaitkevicius。
这是一个热门问题,由于最初的研究已有 14 年的历史,我会尽量保持最新:截至 2021 年 1 月,该建议仍然有效。尽管 IE11 可能会接受更长的 URL,但旧版 IE 安装的普遍存在加上搜索引擎的限制意味着保持在 2000 个字符以下是最好的一般策略。
关于http - 不同浏览器中 URL 的最大长度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12302299/
据我了解,HTTP POST 请求的正文大小没有限制。因此,客户端可能会在一个 HTTP 请求中发送 千兆字节 的数据。现在我想知道 HTTP 服务器应该如何处理此类请求。 Tomcat 和 Jett
在了解Web Deploy我遇到了一些讨论 http://+:80 和 http://*:80 的 netsh.exe 命令。这些是什么意思? 最佳答案 引自URLPrefix Strings (Wi
假设我有一个负载均衡器,然后是 2 个 Web 服务器,然后是一个负载均衡器,然后是 4 个应用程序服务器。 HTTP 响应是否遵循与 HTTP 请求服务相同的路径? 最佳答案 按路径,我假设您是网络
我有一个带有 uri /api/books/122 的资源,如果在客户端为此资源发送 HTTP Delete 时该资源不存在,那么相应的响应代码是什么这个 Action ?是不是404 Not Fou
是否有特定的(或约定的)HTTP 响应消息(或除断开连接之外的其他操作)来阐明服务器不接受 pipelined HTTP requests ? 我正在寻找能让客户端停止流水线化它的请求并分别发送每个请
在了解Web Deploy我遇到了一些讨论 http://+:80 和 http://*:80 的 netsh.exe 命令。这些是什么意思? 最佳答案 引自URLPrefix Strings (Wi
我有一个带有 uri /api/books/122 的资源,如果在客户端为此资源发送 HTTP Delete 时该资源不存在,那么相应的响应代码是什么这个 Action ?是不是404 Not Fou
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我使用 Mule 作为 REST API AMQP。我必须发送自定义请求方法:“PRINT”,但我收到: Status Code: 400 Bad Request The request could
我需要针对具有不同 HTTP 响应代码的 URL 测试我的脚本。我如何获取响应代码 300、303 或 307 等的示例/示例现有 URL? 谢谢! 最佳答案 您可以使用 httpbin为此目的。 例
我正在尝试编写一个程序来匹配 HTTP 请求及其相应的响应。似乎在大多数情况下一切都运行良好(当传输完全有序时,即使不是,通过使用 TCP 序列号)。 我发现的唯一问题是当我有流水线请求时。在那之后,
RESTful Web Services鼓励使用 HTTP 303将客户端重定向到资源的规范表示。它仅在 HTTP GET 的上下文中讨论主题。 这是否也适用于其他 HTTP 方法?如果客户端尝试对非
当使用chunked HTTP传输编码时,为什么服务器需要同时写出chunk的字节大小并且后续的chunk数据以CRLF结尾? 这不会使发送二进制数据“CRLF-unclean”和方法有点多余吗? 如
这个问题在这里已经有了答案: Is it acceptable for a server to send a HTTP response before the entire request has
如果我向同一台服务器发出多个 HTTP Get 请求并收到每个请求的 HTTP 200 OK 响应,我如何使用 Wireshark 判断哪个请求映射到哪个响应? 目前看起来像是发出了一个 http 请
func main() { http.HandleFunc("/", handler) } func handler(w http.ResponseWriter, r http.Request
我找不到有值(value)的 NodeJS with Typescript 教程,所以我在无指导下潜入水中,果然我有一个问题。 我不明白这两行之间的区别: import * as http from
问一个关于Are HTTP headers case-sensitive?的问题,如果 HTTP 方法区分大小写,大多数服务器如何处理“get”或“post”与“GET”或“POST”? 例如,看起来
我正在使用ASP.NET,在其中我通过动词GET接收查询,该应用程序专用于该URL。 该代码有效,但是如果用户发送的密码使http 200无效,请回答我,并在消息的正文中显示“Fail user or
Closed. This question needs details or clarity。它当前不接受答案。 想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。 9
我是一名优秀的程序员,十分优秀!