GET请求中参数含有某些特殊字符的处理
来源:互联网 发布:罗塞塔石碑mac破解版 编辑:程序博客网 时间:2024/05/15 12:22
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);
当我们的请求的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.
这样来就不会出现自动截断或者其他意想不到的效果。
- GET请求中参数含有某些特殊字符的处理
- get请求中特殊字符的处理
- ajax请求中传递的参数中如果含有特殊字符怎么处理?
- ajax请求中传递的参数中如果含有特殊字符怎么处理?
- window.showModalDialog 参数传递中含有特殊字符的处理
- Ajax 以GET方式请求时,参数中包含 "#" 特殊字符的处理
- 关于处理GET方式提交的含有特殊字符的参数jsp
- 关于处理GET方式提交的含有特殊字符的参数
- Java http处理get请求,参数中带特殊字符处理方式
- GET请求特殊字符处理
- Ajax请求,参数中含有非法字符处理
- sql语句中含有特殊字符的处理方式
- ajax之get方式请求对特殊字符的处理
- 【已解决】GET方法的参数中处理URL特殊字符&%等
- Http请求带有特殊字符的参数处理
- http请求中对特殊字符的处理,以及xml中对特殊字符的处理
- js与java对http参数含有特殊字符的传递处理
- 对于请求的URL中有特殊字符的处理
- js为数字添加千位分隔符“,”
- Objective-C 与 C++ 的区别:
- IOS 多线程 RUNLOOP 机制 (二)
- Prime Path (p3126)
- android几种定时器机制及区别
- GET请求中参数含有某些特殊字符的处理
- MySql数据库索引详解教程
- Win7主题制作教程 电脑主题制作图文方法
- php5 for IIS6环境集成安装包(正式版) V2.0快速卸载
- IOS 多线程 RUNLOOP 机制 (三)
- HR PNPCE rp-provide-from-last报错
- ios 线程同步
- Directshow(SDK)学习笔记九_视频捕获
- javaweb小项目——MyBBS