URL 长度限制

URL 长度限制

结论:前后端任何请求的 URL 建议限制长度,否则请求可能会失败。

HTTP 协议对 URL 长度的描述

HTTP手册

The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).

HTTP协议没有对URI的长度进行任何事先的限制。服务器必须能够处理它们所服务的任何资源的URI,并且如果它们提供了可以生成此类URI的基于get的表单,则应该能够处理无界长度的URI。如果一个URI超过了服务器的处理能力,服务器应该返回**414 (Request-URI Too Long)**状态。

虽然 HTTP 协议没有限制 URL 的长度,但是允许服务器对其进行限制。而且客户端(浏览器)一般也有自己的 URL 长度限制。

浏览器 URL 最大长度限制

每个浏览器对 URL 长度的最大限制不同,当超过最大限制后页面不会正常打开。

这个长度无法通过浏览器设置修改(反正我没找到方法)。

浏览器最大长度限制参考:

浏览器最大长度(字符数)
Internet Explorer2048
Edge4035
Firefox65536
Chrome8182
Safari80000
Opera190000

服务器 URL 最大长度限制

服务器可以通过配置修改最大长度。

服务器最大长度限制参考:

服务器最大长度(字符数)
Apache(Server)8192
IIS16384
Nginx4096
Tomcat65536

总结

HTTP 协议没有限制 URL 的最大长度,但是浏览器和服务器都有自己的要求,当超过最大长度,请求可能不会正常工作。

所以建议项目中使用的 URL 长度最好不要超过 IE 的最大长度限制(2038),一些大公司的项目,往往设置的更小(例如几百个字符)。

开发中需要注意的是:

  • URL 上的中文字符会被浏览器编码(urlencode),如果浏览器编码为 UTF8,一个汉字将最终编码后的字符长度为9个字符,例如 将会编码为 \u957f
  • URL 长度超限一般发生在将参数拼接到 URL 上进行传递的方式,开发时应尽量避免这种方式进行传递。
  • webpack 打包体积较小的图片时会将其优化转换成 DataUrl 地址,如果内容比较丰富,地址也会很长。
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值