我是否有完整的HTTP标头可以正确进行身份验证

时间:2017-07-14 11:56:42

标签: javascript curl django-rest-framework

构建Django Rest框架。当我用户卷曲时#39;使用有效的令牌调用API:

curl -viL -H "Authorization: Token 65c38dfe0c910b727197683aebdcc1c67c1b7aa3" http://127.0.0.1:8000/api/habit/ 

通过我的javascript调用进行相同的API调用,失败,Django将其视为匿名用户并出错。

fetchHabits: function() {
  console.log('Token '+this.authToken.token);
  fetch('http://127.0.0.1:8000/api/habit/?format=json',{
     method: 'GET',
     headers: {
       'Accept': 'application/json',
       'Content-Type': 'application/json',
       'Authorization': 'Token '+this.authToken.token
     }
  })
  .then(response => response.json())
  .then(json => this.habits = json)
},

我已经证明发送和接收了正确的令牌。我假设,因为CURL的工作原理是Django代码正常工作,因此bug存在于Javascript端的头文件中。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

HTTP标头中有一个缺少的组件,它需要“cedentials:'included'” 最后的标题是:

  fetch('http://127.0.0.1:8000/api/habit/?format=json',{
     method: 'GET',
     headers: {
       'Accept': '*/*',
       'Content-Type': 'application/json',
       'Authorization': 'Token '+this.authToken.token
     },
     credentials: 'include'
  })