linux 默认post大小设置,Get和Post请求详解

1.请求长度

RFC对于Get和Post请求并没有长度的限制。

但是浏览器有限制,比如IE浏览器Get请求不能超过2083个字符,而火狐浏览器不能超过65536个字符。浏览器对于Post请求则没有限制。

服务器对Get和Post请求可以进行限制,以Tomcat为例,Connector中的maxHttpHeaderSize限制了Get请求的长度,而maxPostSize则可以限制Post请求的长度。由此可见两种请求的区别,get请求在Http Header部分,而Post请求在Http Body部分。

2.编码

Spring的CharacterEncodingFilter和request的setCharacterEncoding仅仅针对Http Body,这两种方式对于Get请求不起作用。

以Tomcat为例,可以调整URIEncoding参数或者启用useBodyEncodingForURI来调整Get请求的编码。URIEncoding默认是ISO-8859-1编码。

当然,这种方式不具通用性,需要修改中间件的配置。

还有一种方法,在前台页面通过JS对中文进行两次编码。

以如下前台页面为例,将两次编码的中文数据提交到后台Servlet。

function get(){

var data='中文请求';

data=encodeURIComponent(encodeURIComponent(data));

document.getElementById("a").href="http://127.0.0.1:8080/Web/Encoding?name="+data;

}

Click

Servlet解码一次,即可得到中文数据。

String name = URLDecoder.decode(request.getParameter("name"),"utf-8");

以"中文请求"为例

前台JS第一次编码的结果:%E4%B8%AD%E6%96%87%E8%AF%B7%E6%B1%82

前台JS第二次编码的结果:%25E4%25B8%25AD%25E6%2596%2587%25E8%25AF%25B7%25E6%25B1%2582

在第一次编码之后,数据已经都是ASCII字符,所以二次编码就是将第一次编码中的"%"进一步编码为"%25"

请求到达Tomcat之后,Tomcat会根据URIEncoding自动解码(默认为ISO-8859-1),所以在进入Servlet的doGet方法之前,数据已经还原为

“%E4%B8%AD%E6%96%87%E8%AF%B7%E6%B1%82”

故最后使用String name = URLDecoder.decode(request.getParameter("name"),"utf-8");就可以得出正确的数据。

这种方式的好处是不用修改中间件的配置。缺点是两次编码会导致URL膨胀。

3.缓存内容

浏览器会缓存get请求的结果直至过期,这也是JSONP技术需要使用随机数的原因。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值