【问题标题】:CORS Header Error when using Authorization Header使用授权标头时出现 CORS 标头错误
【发布时间】:2017-03-07 10:12:33
【问题描述】:

所以这是我当前的代码

当我从headers 中删除Authorization 时,请求将成功,并且我得到响应。但是当我使用Authorization 标头时,它会给我这个错误。

服务器正在使用 Python Django 并使用 this libary 进行 CORS 处理

编辑 1:这是python 服务器设置

编辑 2:添加浏览器

我使用 Chrome 版本 53.0.2785.143 m(64 位)

编辑 3:邮递员回应

刚刚收到奇怪的回复。当后端人员从他的笔记本电脑上尝试时,他得到了完整的标题。像这样: 但是当我使用我的笔记本电脑时,我得到了这样的回应:

【问题讨论】:

  • 你能在你的settings.py 中举一个你的CORS_ORIGIN_WHITELIST 的例子吗?
  • @r3ign 已经尝试ALLOW_ALL,所以WHITELIST 被忽略
  • 我在想Authorization没有添加到CORS_ALLOW_HEADERS
  • 另外,在没有Authorization头的情况下请求成功,很奇怪。有什么可能导致您的代码出现这种情况?
  • 您能否提供settings.py所有 个相关条目的完整详细信息,以及发生此错误时您使用的浏览器?如果没有,这最终将是一场猜谜游戏。此外,this answer 中提到的浏览器信息也有帮助

标签: javascript python angularjs django


【解决方案1】:

我猜 cors 不允许 Authorization 标头。所以,让我们将Authorization 条目添加到CORS_ALLOW_HEADERS

CORS_ALLOW_HEADERS = (
...
'Authorization',
...
)

【讨论】:

  • 很遗憾,它也已经添加了。当我尝试使用邮递员时,这是响应的标题``` Access-Control-Allow-Credentials →true Access-Control-Allow-Headers →accept,accept-encoding,authorization,content-type,dnt,origin,user -agent, x-csrftoken, x-requested-with Access-Control-Allow-Methods →GET, POST, PUT, PATCH, DELETE, OPTIONS ``
  • 您确定标头不区分大小写吗?
  • 根据RFC 7230,我的错误标题不区分大小写
  • 你在MIDDLEWARE_CLASSES下添加corsheaders.middleware.CorsMiddleware了吗?
  • 另外,在 INSTALLED_APPS 中添加corsheaders
【解决方案2】:

解决了! 这是由用于监控的 App Enlight 插件引起的。当我删除它时,一切正常,没有错误:)

【讨论】:

    猜你喜欢
    • 2021-02-21
    • 2019-05-30
    • 2020-01-05
    • 2019-11-23
    • 1970-01-01
    • 2019-03-20
    • 2020-08-30
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多