axios.post没有发送auth头(但.get确实)

时间:2017-08-23 17:50:09

标签: vue.js axios

我在我的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请求,我有什么遗漏吗?

1 个答案:

答案 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)
 })