我在 Django 中将 CORS 列入白名单,但跨源请求仍然被阻止

I have CORS whitelisted in Django and the Cross Origin Request is still blocked

我有一个 Vue 前端和一个 Django 后端,并且我在 settings.py 中启用了 CORS,但我仍然遇到这些错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8000/api/register. (Reason: expected ‘true’ in CORS header ‘Access-Control-Allow-Credentials’).

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8000/api/register. (Reason: CORS request did not succeed). Status code: (null).

这是我的 settings.py 文件的底部:

CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
    'http://localhost:8080',
    'http://localhost:8000',
)

您已将您的端点列入白名单,但对于 CORS,您还需要进行一些正确设置。

  • Access-Control-Allow-Origin
  • Access-Control-Allow-Headers
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Credentials

您已将来源列入白名单,但 headers、方法和凭据可能尚未在您的 Django 项目上配置。 Headers 和方法的默认值为 django-cors-headers documentation。所以最后一个是 Credentials,您可能想检查您的项目是否需要身份验证。如果是这样,那么 CORS_ALLOW_CREDENTIALS(默认值为 False)是您可能想要查看的那个,如果您的项目需要它,请将其设置为 true。