【问题标题】:Axios Token authorization 401 results in Django Rest FrameworkAxios Token 授权 401 导致 Django Rest Framework
【发布时间】:2020-01-16 08:22:32
【问题描述】:

我尝试在我的 Django 项目中调用 REST api 端点。到目前为止,它在使用 curl,邮递员时工作。当我尝试使用 Axios 在我的 django 模板前端调用它时遇到问题。 当我检查网络选项卡时,请求返回 401,同时发送参数和令牌。

axios.get(url,{headers: {'Authorization': 'Token 0ca677330f947335a72572bdbdfe305ae7dd8ba6'},params:params})

我也试过

 return axios({
                  method: 'get',
                  url: url,
                  headers: {
                        'Authorization': 'Token 0ca677330f947335a72572bdbdfe305ae7dd8ba6'
                    },
                    params: params
                })

仍然得到 401。

有什么想法吗?

更新

现在我找出了原因。当我在谷歌隐身模式下尝试时,它可以工作,我可以通过使用其他浏览器(如 Firefox)来确认这一点,现在我更新的问题是,如何删除或刷新以删除缓存?我通过删除应用程序选项卡中的缓存尝试了 chrome 的开发者控制台中的所有内容

【问题讨论】:

  • 301 是一个重定向,你会被重定向到哪里?
  • 401 是未经授权的错误,因此您的令牌可能已过期或不正确。
  • @adnanmuttaleb 如前所述,它适用于 curl 或 postman。
  • 实际上,我们的一个应用消费者使用原生 curl 运行良好。我认为如果访问 tru Javascript 需要特定的配置。我已经尝试过 Jquery 方式,仍然得到 401
  • 你得到答案了吗,我遇到了同样的问题。

标签: django vue.js django-rest-framework axios


【解决方案1】:

将此添加到您的 settings.py 文件中

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES':(
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    )
}

并确保TokenAuthentication 位于顶部。

【讨论】:

  • 已经这样做了。没有任何效果。前端与 api 同源,可能需要在设置中添加一些东西
  • 既然你得到 401 这不应该是一个 cors 问题
  • 我怀疑它没有将 Authorization-Header 转发到 WSGI-Process。只是我的猜测。
  • 您是否已将此添加到 settings.py CORS_ALLOW_HEADERS = ['authorization',] ?如果您使用 django-cors-headers
猜你喜欢
  • 2015-07-08
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 2018-07-31
相关资源
最近更新 更多