axios 如何获取params 并重新赋值?
在axios拦截器中,获取config.params并重新赋值,但是发现变量好像进行了提升。
代码如下:
service.interceptors.request.use(
config => {
if (store.getters.token) {
config.headers['Admin-Token'] = getToken()
}
buildSign(config)
return config
},
error => {
// do something with request error
console.log(error) // for debug
return Promise.reject(error)
}
)
function buildSign (config) {
const map = new Map()
if (config.params !== undefined) {
var signParams = Object.assign(config.params)
Object.keys(signParams).forEach(function (key) {
map.set(key, signParams[key])
})
}
console.log(map)
const mapAsc = new Map([...map.entries()].sort())
let s = ''
mapAsc.forEach(function (value, key) {
s += key + '=' + value + '_'
})
s = encodeURIComponent(
removeChar(config.url) + '_' + s + process.env.VUE_APP_TIMA_SECRETKEY
)
s = md5(s)
config.params['sign'] = s
}
此时发现,如果我想重新赋值config.params['sign'],发现在我进行遍历
var signParams = Object.assign(config.params)
Object.keys(signParams).forEach(function (key) {
map.set(key, signParams[key])
})
时map已经存在sign的key了,这是发生了什么问题呢?变量提升吗。小白求问,谢谢大家
此时的签名就是错误的。如果我注释掉最后的
config.params['sign'] = s
签名就是正确的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论