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

场景:

需要向后端传递
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额外进行转义了,而且由于传递的时候转义过,=也不会被阶段

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值