zoukankan      html  css  js  c++  java
  • GET请求中参数含有某些特殊字符的处理

    HTTP标准的两种请求方式:Post和Get,关于这两种请求方式的区别相关资料云集,这里不做阐述。然而,你是否注意到:
    我们通过get方式从浏览器的地址栏传递数据给服务器,当参数的值中含有某些特殊转义字符的时候,没经过些许处理将得不到预期的结果。

    例如:
    当我们的请求的url为:
    http://localhost:8080/index.jsp?parameter=kalman03#kalman#1
    或许你预期在服务器端获得的parameter的结果为kalman03#kalman#1,错!!!实际上得到parameter的值为kalman03。
    这究竟是为什么呢?
    原因:
    parameter的值含有特殊字符#,浏览器自动截断#字符和其后面的值,这样得到的值就为kalman03。
    推广:
    当参数值中含有特殊字符 ?!=()#%& 的时候,获得的值同样也会出现与预期结果不一致的情况。
    解决方案:
    方法1:通过post方式传递数据;
    方法2:对参数进行一次编码parameter=escape(parameter);

    第一种解决方案不解释也能明白,现在解释下第二种方法的处理:
    JavaScript escape() 函数的功能是把其中某些字符替换成了十六进制的转义序列。该方法不会对ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。具体参考:http://www.w3school.com.cn/js/jsref_escape.asp.
    这样来就不会出现自动截断或者其他意想不到的效果。

  • 相关阅读:
    (摘)Zebra打印机异常处理
    (摘)Chart Y轴设置为百分比
    关于ZFS、GPT、4K、Geom Label的一些说明
    (转)ASP.NET性能优化之分布式Session
    (转)WebService的事务处理
    SqlSever分页查询,仅扫描一次表
    (转)对.net系统架构改造的一点经验和教训
    字典树
    Ajax
    Lunix 命令
  • 原文地址:https://www.cnblogs.com/duanxz/p/2855870.html
Copyright © 2011-2022 走看看