即使我设置了 CORS_ORIGIN_ALLOW_ALL = True,Django CORS 也拒绝访问

时间:2021-04-24 09:19:42

标签: django cors django-cors-headers

我有 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

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

1 个答案:

答案 0 :(得分:-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