我在我的Vue项目中使用axios,其中一个调用我的api涉及POST
。我的帖子和帖子都需要使用我的令牌设置Authorization
标头。所有获取请求都可以正常工作,但在axios.post
中放置完全相同的标头会产生403。
这是我的axios代码:
axios.post('https://my.example.org/myapi/meta?uname=' + uname + '&umetaid=' + post.umeta_id + '&umetavalue=' + post.meta_value, {
withCredentials: true,
headers: { 'Authorization': 'Bearer ' + mytoken }
})
.then(function (response) {
console.log(response)
})
.catch(function (error) {
console.log(error)
})
这总是会导致403错误,并且检查我的请求标头会显示永远不会发送Authorization标头。如果我将axios.post
更改为axios.get
以上(并将GET
方法添加到我的api代码中,除了现有的POST,OPTIONS
)之外,它将执行得很好。我想我可以这样离开,但我认为当一个人真正执行GET
时使用POST
来电是不好的做法。关于用axios形成POST
请求,我有什么遗漏吗?
答案 0 :(得分:6)
Axios Post请求假定第二个参数是数据,第三个参数是config。
Axios Get请求假设第二个参数是config,而数据附加在URL中。
您要在网址中发送数据,该数据应作为第二个参数(对于POST请求)。
代码应该是:
var data = {
'uname': uname,
'umetaid': post.umeta_id,
'umetavalue': post.meta_value
}
var headers = {
withCredentials: true,
headers: { 'Authorization': 'Bearer ' + mytoken }
}
axios.post('https://my.example.org/myapi/meta',data,headers)
.then(function (response) {
console.log(response)
})
.catch(function (error) {
console.log(error)
})