zoukankan      html  css  js  c++  java
  • 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));
    

      

      

  • 相关阅读:
    jQuery tips
    WCF4.0进阶系列—第十一章 编写代码控制配置和通信 (上)
    WCF4.0进阶系列—第九章 事务支持(上)
    WCF4.0进阶系列第二章 寄宿WCF服务
    WCF4.0进阶系列第五章 在因特网环境下保护WCF服务
    [JavaScript] onkeypress and onchange event
    [JavaScript]使用jQuery定制开发自己的UI
    WCF4.0进阶系列第四章 保护企业内部的WCF服务
    WCF4.0进阶系列第六章 维护服务协定和数据协定
    WCF4.0 进阶系列第一章 WCF简介
  • 原文地址:https://www.cnblogs.com/hf-china/p/9040899.html
Copyright © 2011-2022 走看看