URL 的长度上限
URL 的最大长度是多少?W3C 的 HTTP 协议 并没有限定,然而,在实际应用中,经过试验,不同浏览器和 Web 服务器有不同的约定:
IE 的 URL 长度上限是 2083 字节,其中纯路径部分不能超过 2048 字节。
Firefox 浏览器的地址栏中超过 65536 字符后就不再显示。
Safari 浏览器一致测试到 80000 字符还工作得好好的。
Opera 浏览器测试到 190000 字符的时候,还正常工作。
Web 服务器:
Apache Web 服务器在接收到大约 4000 字符长的 URL 时候产生 413 Entity Too Large" 错误。
IIS 默认接收的最大 URL 是 16384 字符。
HTTP协议中的url,你知道多少呢?
今天有人问我如何来匹配锚点部分的内容,一下子把握问到了,如何来匹配锚点,如何来确定两个url是否是一致的?
只好翻阅了一下http协议的文档以及 w3c关于uri部分的说明文档。找到了定义如下:
一 关于两个url是否是一致的?
HTTP歇息中关于url的格式定义如下:
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
可以看到port可选、query也是可选的。
如果没有给port的话,默认用的就是大家都知道的80端口,abs_path是根据你服务器配置的document root的相对路径,如果为空的话,表示对应的是根目录 ‘/’。
在http协议中规定,除了下面几点外,url的比较是大小写敏感的:
1 没有写明端口的,和默认的端口的是一样的。
2 host(主机或者域名部分)是大小写不敏感的
3 如果路径部分是空的话,等同于/
4 字符html转义前后都是一样的。如~转义为%7e或者%7E
5 这里并没有说明我常常遇到的锚节点(#test)的情况,其实在比较url时,锚节点是不参与比较的。
譬如说下面这三条url就是一样的:
http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html
附英文:
If the port is empty or not given, port 80 is assumed. The semantics are that the identified resource is located at the server listening for ...