一、HTTP协议
HTTP协议
不对url
的长度设置任何先验限制
- 服务器必须能够处理它们所服务的
任何资源的URI
,并且如果它们提供可以生成这种URI
的基于GET
的表单,则应该能够处理无限长度的URI
。 - 如果
URI
长于服务器可以处理的长度,服务器应该返回414
(Request-URI
Too Long)状态 。
二、浏览器
1、IE:IE浏览器
对url
长度限制是2083(2K+53)
字符,超过这个限制,则自动截断
- 若是form提交则提交按钮不起作用
注:实测超过2048
字符会截断(2018-12-3)
2、firefox:firefox
浏览器对url
长度限制为 65,536
字符
- 实际上有效的
URL
最大长度不少于100,000
个字符
3、chrome:chrome
浏览器对url
长度限制为8182字符
4、Safari:Safari
浏览器对url
长度限制至少为80,000
字符
5、Opera:Opera
浏览器对url
长度限制为190 000
字符
注:
URL
只能使用英文字母、阿拉伯数字和某些标点符号。不能使用其他文字和符号,否则必须编码后使用即使是
2048
个ASCII
字符也能满足大多数的使用场景,可以放心使用。
三、服务器
1、Apache:Apache
能接受url长度
限制为8,192
字符
2、ngnix:可以通过修改配置来改变url长度
限制
1 | client_header_buffer_size 1k # 默认值 |
四、URL编码
- 网页路径的编码,用的是utf-8编码
1 | http://zh.wikipedia.org/wiki/春节 |
- 查询字符串的编码,用的是操作系统的默认编码
1 | http://www.baidu.com/s?wd=春节 |
- GET和POST方法的编码,用的是网页的编码
1 | // 在已打开的网页上,直接用Get或Post方法发出HTTP请求 |
- 在Ajax调用中,IE总是采用GB2312编码(操作系统的默认编码),而Firefox总是采用utf-8编码
1 | 三种情况都是由浏览器发出HTTP请求,最后一种情况则是由Javascript生成HTTP请求,也就是Ajax调用 |
注:文章太久远了,可能都默认utf-8
了(猜测,未验证2018-12-30
)