Django CORS 拒绝访问,即使我设置了 CORS_ORIGIN_ALLOW_ALL = True
Posted
技术标签:
【中文标题】Django CORS 拒绝访问,即使我设置了 CORS_ORIGIN_ALLOW_ALL = True【英文标题】:Django CORS denying access even though I've set 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
。
我是否缺少其他设置或其他内容?
【问题讨论】:
【参考方案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 吗?以上是关于Django CORS 拒绝访问,即使我设置了 CORS_ORIGIN_ALLOW_ALL = True的主要内容,如果未能解决你的问题,请参考以下文章
即使使用 RPC_C_AUTHN_NONE,Windows RPC 访问也会被拒绝
使用 CORS 调用本地 URL 时 IE10 中的访问被拒绝