GET请求中对于参数中特殊字符的处理
2021/5/6 18:29:29
本文主要是介绍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"); }
特殊字符分类
- 用于分隔 URI 组件的标点符号:
;/?:@&=+$,#
- 其他ASCII 标点符号进行编码:
- \_ . ! ~ \* ' ( )
encodeURI
与encodeURIComponent
的区别:
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请求中对于参数中特殊字符的处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南
- 2024-09-26Springboot微服务资料入门教程