Django CORS 标头未按文档中的建议工作
Posted
技术标签:
【中文标题】Django CORS 标头未按文档中的建议工作【英文标题】:Django CORS Headers not Working as Suggested in Docs 【发布时间】:2021-01-21 08:43:45 【问题描述】:Django Cors 标头的 DOCS,https://pypi.org/project/django-cors-headers/,
明确指出CORS_ALLOWED_ORIGINS
:
以前的这个设置 被称为
CORS_ORIGIN_WHITELIST
,它仍然作为别名工作,与 新名称优先。
从代码中,如果我使用CORS_ORIGIN_WHITELIST
,我的请求将通过,但如果我使用CORS_ALLOWED_ORIGINS
,同时注释掉CORS_ORIGIN_WHITELIST
,我的请求将被阻止。在我的选项请求中,我没有得到任何响应,随后的 POST 请求被阻止。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#APPS
....
#ADDL FRAMEWORKS
'corsheaders',
'rest_framework',
'oauth2_provider',
'django_extensions',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_WHITELIST = [
'http://127.0.0.1:3000',
'http://localhost:3000'
]
# CORS_ALLOWED_ORIGINS = [
# 'http://127.0.0.1:3000',
# 'http://localhost:3000',
# ]
CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]
CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
]
【问题讨论】:
您使用哪个版本的django-cors-headers
?
非常感谢,应该是我应该首先检查的地方。我使用的是 3.4.0 版本,他们更新了 3.5.0 中的名称
【参考方案1】:
这是一个VERSION错误。 CORS_ORIGIN_WHITELIST
在版本3.5.0
中更改为CORS_ALLOWED_ORIGIN
,而我似乎运行的是旧版本。
【讨论】:
以上是关于Django CORS 标头未按文档中的建议工作的主要内容,如果未能解决你的问题,请参考以下文章