Django Localhost CORS 不工作

新手上路,请多包涵

我有一个本地 Django 设置如下

Django Rest Framework : localhost:8000

AngularJS frontend : local apache running on http://localservername

我已经安装了 django-cors-headers 并且在我的 settings.py 中,我已经设置了我的

CORS_ORIGIN_WHITELIST = (
    'http://localhost',
    'localservername',
    'http://localservername',
    '127.0.0.1'
)

MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

但是,每当我点击从 Rest Framework 提供的任何 API 时,我都会收到 No 'Access-Control-Allow-Origin' header is present on the requested resource. 错误。如果我设置 CORS_ORIGIN_ALLOW_ALL = True ,那么 API 可以正常工作,但这对我的服务器端数据来说非常不安全。

我必须更改什么才能解决此问题?

原文由 Newtt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 570
2 个回答

在此错误中,提示清楚地提到它需要 https://

 HINT: Add a scheme (e.g. https://) or netloc (e.g. example.com).

此外,大括号在 django 设置中也很重要。

 CORS_ORIGIN_WHITELIST = [
    'https://localhost:3000'
]

并且上述设置工作正常。

虽然具有不同括号的相同设置将不起作用

CORS_ORIGIN_WHITELIST = (
    'https://localhost:3000'
)

原文由 S Habeeb Ullah 发布,翻译遵循 CC BY-SA 4.0 许可协议

对我来说,我使用 [] 而不是 ()。也不要在末尾添加 ‘/‘。

像这样的东西

CORS_ORIGIN_WHITELIST = [
    'http://localhost:3000'
]

原文由 user13872382 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题