常用ASCII URL编码对照表,JavaScript中如何把url的%20、%22、%28、%29、%7B、%7D解析还原成真实的字符
【问题描述】:
笔者遇到过这样一个需求,在http的拦截器中拦截url并添加一些额外的参数,代码如下:
// http request 拦截器
// instance: axios实例
this.instance.interceptors.request.use(config => {const authParams: any = LocalStorage.get(STORAGE_KEY.IFRAME_PARAMS)// 替换url,替换参数const {url, baseURL, params} = configlet [pathname, search] = url.split('?')const temp = search ? this.parseParams(search) : {}Object.assign(temp, authParams) // 覆盖原请求中的部分参数const newParams = this.getQueryString(temp)config.url = newParams ? `${pathname}?${newParams}` : pathname // 使用?拼接成新的urlreturn config},err => {return Promise.reject(err)})/*** @desc 解析跳转进来的路由参数,为对象* '?type=1&iframe=true'* =>* {type: "1"iframe: "true"}*/parseParams(search) {const ret = {},seg = search.replace(/^\?/, '').split('&'),len = seg.lengthlet i = 0, sfor (; i < len; i++) {if (!seg[i]) {continue}s = seg[i].split('=')ret[s[0]] = s[1]}return ret}
比如拦截http请求(1):
https://xxx.com/report/list?title=customer_number&endTime=2020-06-30%2023:59:59&startTime=2020-06-01%2000:00:00&pageSize=20¤tPageNo=1
添加参数后变成请求(2):
https://xxx.com/report/list?timestamp=1595314770&sign=9bc3fd371169e2b4fb6184ed081b0817¤tPageNo=1&pageSize=20&startTime=2020-06-01%252000:00:00&endTime=2020-06-30%252023:59:59&title=customer_number
对比可知添加了参数:
// B
{timestamp: 1595314770,sign:9bc3fd371169e2b4fb6184ed081b0817
}
我的做法是解析成元url中?后面的参数成object(A),然后把新的参数(B)拼接到A上,再更新新的url的参数,看似逻辑木得问题,但是!发请求的时候就是失败,并且报错:参数[startTime]格式错误,咦,笔者都没有操作startTime啊,怎么会参数错误呢?
【错因查找】:
笔者瞪大着高度近视的小眼睛,观察了半天才发现,原来两个url中的startTime参数真的不一样,
请求(1)中startTime:startTime=2020-06-01%2000:00:00
请求(2)中startTime:startTime=2020-06-01%252000:00:00
额,笔者当时上传的参数未:startTime=2020-06-01 00:00:00
,明明是空格(space),肿么变成了%20,又变成了%25呢?原来是特殊字符的锅。。。
由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码。
较为特殊的字符例如:@&=+$,/?%!*’();:#[]
当客户端发请求时,浏览器会自动对含有这些字符的部分进行处理,根据
常用ASCII URL编码对照表,JavaScript中如何把url的%20、%22、%28、%29、%7B、%7D解析还原成真实的字符相关推荐
- url中的20%、22%、26%、7B%、%7D、28%、29%怎么解析还原成真实的字符
URL编码表 backspace 8% A 41% a 61% § %A7 Õ %D5 tab 9% B 42% b 62% « %AB Ö %D6 linefeed %0A C 43% c ...
- url编码 android,Android中的URL编码
您如何在Android中编码URL ? 我以为是这样的: final String encodedURL = URLEncoder.encode(urlAsString, "UTF-8&qu ...
- 火狐浏览器设置url编码_关于不同浏览器对URL编码的分析(转)
转自:http://wdp107.iteye.com/blog/608786 先来看看三个url: url1. http://hi.baidu.com/爱宝的妍 url2. http://hi.bai ...
- php 文字 url编码,如何实现php中文转url编码
如何实现php中文转url编码 发布时间:2020-08-07 10:10:03 来源:亿速云 阅读:65 作者:Leah 如何实现php中文转url编码?相信很多没有经验的人对此束手无策,为此本文总 ...
- 常用ASCII码详细对照表 (0—255)
第0-32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行).CR(回车).FF(换页).DEL(删除).BEL(振铃)等:通讯专用字符:SOH(文头).EOT(文尾).ACK ...
- URL中的20%、22%、26%、7B%、%7D、28%、29%解析成真实的字符
https://blog.csdn.net/superit401/article/details/78052965
- php html url编码,html中url编码是什么?有什么用?
本篇文章给大家带来的内容是介绍HTML中的URL编码是什么,有什么用.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 我们在介绍URL编码之前,首先来了解一下URL是什么,URL的相 ...
- JS javascript实现url编码和url解码(urlEncode urlDecode)
本文转自:JS javascript实现url编码和url解码(urlEncode urlDecode) 转载请保留. 表单通过get方式提交中文数据时,提交的中文会被转化为类似"%CC% ...
- 网络传输中的那些编码之-URL编码
由于URL编码的一些混乱情况,曾经困扰着无数的程序员,本文将捋一捋URL编码相关的一些知识点,希望看望之后能给人恍然大悟的感觉. 本文将从如下几个方面进行介绍: 什么是URL编码 为什么进行URL编码 ...
最新文章
- SAP QM 检验批上留样记录如何看?
- LIME:一种解释机器学习模型的方法
- SpringBootController控制层接收参数的几种常用方式
- mac 怎么创建php文件夹权限设置密码,Mac文件权限管理(shell命令)
- 牛客网(剑指offer) 第四题 重建二叉树
- I Got a Matrix!
- [js] 在设置keyup监听事件后按F5刷新和按浏览器中刷新键刷新有什么区别?
- MaxCompute 多租户数据安全体系
- excel两个表格数据对比_两个Excel表格合并,最有水平的处理方法
- 05 搭建4节点hadoop集群
- kill、killall 、pkill 发送信号命令
- 苹果sf字体_字体基础知识
- [附源码]计算机毕业设计JAVAjsp宾馆客房管理系统
- vs未能加载项目文件。未能找到路径 c#笔记5
- HTML+CSS+JS实现 ❤️ 立方体旋转图片切换特效❤️
- python+ opencv实现摄像头实时人脸识别并实现汉字标框
- SSH介绍与神器Tabby
- BAT批量替换文件内容
- 免费开源的商城系统!可商用!推荐给你
- java头像选择系统_安卓Java源程序 带选择头像功能的用户注册 使用Intent回传数据...