关于 HTTP GET/POST 请求参数长度最大值的理解误区

HTTP协议规范从未有对URL长度进行任何限制,也没有对GET/POST的参数值数据长度有限制。这个限制是特定的浏览器及服务器对它的限制

常见浏览器对URL的最大限制:

  1. Microsoft Internet Explorer (Browser)

         IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。

     2. Firefox (Browser)

        对于Firefox浏览器URL的长度限制为65,536个字符。

    3. Safari (Browser)

        最大长度限制为 80,000个字符。

   4. Google (chrome)

        最大长度限制为8182个字符。

   5. Apache (Server)

        能接受最大url长度为8,192个字符。

因此,为了让所有的用户都能正常浏览, URL最好不要超过IE的最大长度限制(2083个字符),当然,如果URL不直接提供给用户,而是提供给程序调用,这时的长度就只受Web服务器影响了

注:对于中文的传递,最终由urlencode后的编码形式进行传递,如果浏览器的编码为UTF8的话,一个汉字最终编码后的字符长度为9个字符。因此如果使用的 GET 方法,最大长度=URL最大长度—实际路径中的字符数。

GET VS POST

1、多数浏览器对于POST采用两阶段发送数据的,第一步发送请求头header,第二步再发送请求体body部分,即使参数再少再短,也会被分成两个步骤来发送(相对于GET)。

2. HTTP请求包括请求报头和请求主体两个部分,其中请求报头包含了至关重要的信息,包括:

  1. 请求的方法(GET / POST/PUT...)、
  2. 目标url、
  3. 遵循的协议(http / https / ftp…),
  4. 返回的信息是否需要缓存,
  5. 客户端是否发送cookie等。

3. POST请求
  3.1 nginx服务器

  请求体Body大小的限制,在Nginx服务器的配置文件nginx.conf中http{}可进行配置,nginx默认大小是1M。

client_max_body_size 100M; //限制请求报文体的大小
client_header_buffer_size 512K; //nginx服务器接受客户端请求的头信息时所分配的最大缓冲区
large_client_header_buffers 512K; //该参数对发自客户端的http头信息的大小进行了限制,超过限制服务器会返回错误状态码 414(Request-URI Too Large)。该参数的默认值为1K

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值