【half 记录back】url有参数=被转义两次,解决方案

【half 记录back】url有参数=被转义两次,解决方案,第1张

文章目录 场景:问题1 截断 问题2 发请求转义

场景:

需要向后端传递
param:
a=1 & b=2 & c=3
cookie:
a=1 & b=2 & c=3
使用get的方式,但是传过去之后:

问题1 截断

param=a=1 & b=2 & c=3
这样直接被截断掉了,变成了 param=a,一个

& header= Content-Type=x-www-form-urlencoded & 。。。
发出去剩下& header= Content-Type & 。。。 了

总之就是截断了,所以要转义,也就是发之前,就先 encodeURIComponent
还有两个差不多的
encodeURI
escape 、 unescape
这样发是可以发了,但是发的时候,浏览器还会自动对param=进行编码,内容也是,所以这样就两层编码,导致

后端识别问题,以及接收参数回来时需要转码两次 问题2 发请求转义

看下发请求的时候怎么写的:

//之前
export const getList = async (params) => {
  return await axios.get(`xxxxxxxxxxx`, 
  { withCredentials: true, params: params });
};

可以看到是放在param里,那么直接

export const requestApiTest = async (params) => {
  return await axios.get(`xxxxxxxxxxx`+params, { withCredentials: true, 
    // params: params 
  });
};

传递的时候也是直接传拼接好的url。这样就不会对param额外进行转义了,而且由于传递的时候转义过,=也不会被阶段

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1296411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存