美文网首页
URL长度限制

URL长度限制

作者: 涅槃快乐是金 | 来源:发表于2022-03-11 21:26 被阅读0次

最近在做的一个项目遇到了URL超长,服务端返回41X拒绝请求的错误,经过仔细排查才发现原来url长度超过了限制,通过缩短url和数据走接口的形式才解决问题,现在我们就来讨论下url的长度是那边来限制的。

http协议不限制

其实http 1.1 协议中对url的长度是不受限制的,协议原文:
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).

Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxyimplementations might not properly support these lengths.

翻译:

HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生。如果服务器不能处理太长的URI的时候,服务器应该返回414状态码(此状态码代表Request-URI太长)。

注:服务器在依赖大于255字节的URI时应谨慎,因为一些旧的客户或代理实现可能不支持这些长度。

具体参见协议 中的3.2.1
虽然协议中未明确对url进行长度限制,但在真正实现中,url的长度还是受到限制的,一是服务器端的限制,二就是浏览器览器端的限制。

服务器限制

现在项目中使用的是nginx,它的设置参数:

  • large_client_header_buffers
    该参数对nginx服务器接受客户端请求的头信息时所分配的最大缓冲区的大小做了限制,也就是nginx服务器一次接受一个客户端请求可就收的最大头信息大小。这个头不仅包含 request-line,还包括通用信息头、请求头域、响应头域的长度总和。这也相当程度的限制了url的长度。

nginx服务器默认的限制是4K或者8K,这是根据服务器的硬件配置有关的,一般为内存一页的大小,目前大部分为4K,即4096字节。

  • client_header_buffer_size 默认值:1k

浏览器限制

浏览器的种类繁多,并且对URL的长度限制是有所差异的,具体如下:

浏览器 最大长度(字符数) 备注
Internet Explorer 2083 如果超过这个数字,提交按钮没有任何反应
Firefox 65,536
chrome 8182
Safari 80,000
Opera 190,000
curl(linux下指令) 8167

相关文章

  • SoupUI相关使用记录

    1、get 参数 放在url中 -- httpget url长度限制。。 http本身时不限制长度得,浏览...

  • URL长度限制

    最近在做的一个项目遇到了URL超长,服务端返回41X拒绝请求的错误,经过仔细排查才发现原来url长度超过了限制,通...

  • 脱机项目的心得。post get的请求最大数据限制。

    1. Get方法长度限制 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限...

  • Get方法url长度限制原因

    Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器...

  • get 和 post 区别

    第一、安全性,get 参数会暴露在url 里,post 参数在请求体里 第二、长度限制,get url 的长度最大...

  • js控制form提交

    form表单提交,之前有个下载的项目接口,需要上url上边传超级多东西,但是 url是限制长度的 每个浏览器限制的...

  • Get和Post的区别

    get参数通过url传递,post放在request body中。 get请求在url中传递的参数是有长度限制的,...

  • 【转载】URL传递参数长度限制

    原文链接:URL传递参数长度限制[https://blog.csdn.net/voodooer/article/d...

  • urllib2.HTTP Error 414. The requ

    原因:错误的原因是你的url的长度太长了对于http协议本身,url是没有长度限制的,但是对于浏览器和web服务器...

  • HTTP请求方法:GET 、POST及其他

    GET 可以缓存、历史记录、书签 请求长度有限制(URL MAX LENGTH 2048) 请求数据保存在在URL...

网友评论

      本文标题:URL长度限制

      本文链接:https://www.haomeiwen.com/subject/yoyhdrtx.html