【问题标题】:Django CORS denying access even though I've set CORS_ORIGIN_ALLOW_ALL = TrueDjango CORS 拒绝访问,即使我设置了 CORS_ORIGIN_ALLOW_ALL = True
【发布时间】:2021-07-18 07:43:42
【问题描述】:

我有 2 个独立的项目,project A 需要从 project B 访问一些东西。我已经在 project B 上安装了 CORS,但从 project A 访问其资源仍然会引发以下错误:

Access to XMLHttpRequest at 'http://api.example.com/api/spotify/1IJxbEXfgiKuRx6oXMX87e' from origin 'http://127.0.0.1:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

项目 B 上的 CORS 设置为 CORS_ORIGIN_ALLOW_ALL = True

我是否缺少其他设置或其他内容?

【问题讨论】:

    标签: django cors django-cors-headers


    【解决方案1】:

    确保您具有documentation 的以下设置部分,尤其是对于 MIDDLEWARE:

    MIDDLEWARE = [
        ...
        'corsheaders.middleware.CorsMiddleware',
        'django.middleware.common.CommonMiddleware',
        ...
    ]
    

    CorsMiddleware 应放置在尽可能高的位置,尤其是在任何可以生成响应的中间件之前,例如 Django 的 CommonMiddleware 或 Whitenoise 的 WhiteNoiseMiddleware。如果不是之前,它将无法将 CORS 标头添加到这些响应中。

    CORS_ORIGIN_ALLOW_ALL 在较新版本中已重命名为 CORS_ALLOW_ALL_ORIGINS

    【讨论】:

    • 感谢泽维尔的回复!我应该把它放在我原来的问题中,但我的中间件顺序正确,重命名为 CORS_ALLOW_ALL_ORIGINS 并没有解决任何问题。
    • 我记得在调用端点 (url + / ) 时是否添加了斜杠时遇到了类似的问题。 Django 拒绝了我的请求,因为我的 URL 没有在我的 urls.py 中定义,因为我忘记了这个斜杠。
    • 试过了,还是没有骰子。我可以知道你使用的是什么版本的 Django/django-cors-headers 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2016-08-13
    • 2014-10-04
    • 1970-01-01
    • 2014-09-14
    • 2019-04-18
    • 2019-10-12
    相关资源
    最近更新 更多