Java教程

GET请求中对于参数中特殊字符的处理

本文主要是介绍GET请求中对于参数中特殊字符的处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

get请求响应为 400,问题在于:{}、\%&,因为有特殊符号所以报错了。

解决方法:

1、在 拼接 请求URL 之前 可以先将 path参数 的参数值通过 encodeURIComponent 处理一下。例如:

var params = { token:xxx };
for(item in params){
    params[item] = encodeURIComponent(params[item]);
}

2、或用 RegExp 去替代

var reg = new RegExp(/\%/,"g");
var reg1 = new RegExp(/\&/,"g");
var params = { token:xxx };
for(item in params){
    params[item] = String(params[item]).repalce(reg,"%25").replace(reg1,"%25");
}

特殊字符分类

  1. 用于分隔 URI 组件的标点符号:;/?:@&=+$,#
  2. 其他ASCII 标点符号进行编码: - \_ . ! ~ \* ' ( )

encodeURIencodeURIComponent的区别:

encodeURIComponent:传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。另外,encodeURIComponent只会对用于分隔 URI 组件的标点符号进行处理。不会对其他标点符号进行编码。

encodeURI:进行url跳转时可以整体使用encodeURI。
encodeURI():不会对用于分隔 URI 组件的标点符号进行编码,例如冒号、正斜杠、问号和井字号;
encodeURI():在实践中更常见的是对查询字符串参数而不是对基础URL进行编码.

 

兼容性比较强的替代版本:

for(var item in params){
    var nowData = params[item];
    try{ 
       params[item] = encodeURIComponent(decodeURIComponent(nowData)) 
    }catch(err){
        var reg = new RegExp(/\%/,"g");
        params[item] = encodeURIComponent(decodeURIComponent(nowData.replace(reg,"%25")))
    }
}
  • 浏览器在对%执行decodeURIComponent时报错
这篇关于GET请求中对于参数中特殊字符的处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!