QueryString / GET / URL参数的限制是什么

时间:2010-06-22 08:33:25

标签: http query-string

QueryString / GET / URL参数的限制是什么

3 个答案:

答案 0 :(得分:59)

理论上没有限制。对于HTTP URL,HTTP 1.1 specification状态:

  

HTTP协议没有对长度进行任何先验限制      一个URI。服务器必须能够处理它们的任何资源的URI      服务,并且应该能够处理无限长度的URI      提供可以生成此类URI的基于GET的表单。一台服务器      如果URI更长,应该返回414(Request-URI Too Long)状态      服务器可以处理(见10.4.15节)。

但实际上,许多客户端和服务器只支持一定长度的URL。 rule of thumb is not to use URLs longer than 2000 characters(已考虑的编码百分比)。

答案 1 :(得分:5)

没有明确的限制。但是,RFC 2068声明:

  

HTTP协议不对URI的长度设置任何先验限制。服务器必须能够处理它们所服务的任何资源的URI,并且如果它们提供可以生成这种URI的基于GET的表单,它应该能够处理无限长度的URI。如果URI长于服务器可以处理的长度,服务器应该返回414(Request-URI Too Long)状态(参见10.4.15节)。注意:服务器应该谨慎依赖于大于255字节的URI长度,因为某些较旧的客户端或代理实现可能无法正确支持这些长度。

答案 2 :(得分:0)

尽管正式没有限制,但是许多安全配置建议指出,服务器上的maxQueryStrings应该设置为最大字符限制为1024,而整个URL(包括查询字符串)应该设置为最大2048个字符。这是为了防止Web服务器上的“慢速HTTP请求”漏洞,以防止在Qualys Web应用程序扫描程序和其他安全扫描程序上显示慢速DDOS攻击。

对于带有Web.config的Windows IIS服务器,请参见以下代码:

<security>
    <requestFiltering>
        <requestLimits maxQueryString="1024" maxUrl="2048">
           <headerLimits>
              <add header="Content-type" sizeLimit="100" />
           </headerLimits>
        </requestLimits>
     </requestFiltering>
</security>