Http请求url参数字符集

http请求:

浏览器 --》服务器(tomcat应用服务器)---》应用

1,浏览器。

  url:浏览器默认采用UTF-8,对URL参数中非ASCII进行百分号编码(RFC3986“%编码”进行编码);

  表单(get/post)请求:采用当前页面编码,对URL参数中的非ASCII字符进行百分号编码;

  ajax:  get方式发起的请求,IE11和chrome会根据当前页面的默认编码对URL参数中的非ASCII字符进行百分号编码。而IE6不会对URL非ASCII表示的路径信息和参数信息进行编码。

      post方式发起的请求,即便设定了application/x-www-form-urlencoded头信息,浏览器也不会对数据做任何的编码(或者说浏览器不把发送的数据当做URL的一部分)。

  采用encodeURIComponent()或者encodeURI()对非ASCII字符进行编码。encodeURIComponent与encodeURI区别:

        1,encodeURI方法不会对下列字符编码  ASCII字母、数字、~!@#$&*()=:/,;?+'

        2,encodeURIComponent方法 不会对下列字符编码 ASCII字母、数字、~!*()
  另外还可以使用escape()对字符串进行编码。
2,Tomcat服务器。

    Tomcat会使用默认字符编码“ISO-8859-1”对URL参数进行解码。可以通过server.xml文件修改字符集编码:

  <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

3,应用

  可以通过使用java.net.URLDecoder与java.net.URLEncoder、或者指定字符集编码重新构造String对象。

 

一种保守的处理方法:对URL参数进行Base64编码、解码。

前端

$.ajax({
            url: "${ctx}/****?key="+encodeURIComponent(new Base64().encode(id)),
            type: 'GET',
            dataType: 'json'
        }).done(function (data) {
            if (data.success) {
                $this.attr("href",data.code);
            }
        });

 后台

key = new String(Base64.decodeBase64(key));

  

  

转载于:https://www.cnblogs.com/hf-china/p/9040899.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值