如何解决我的Django API的CORS问题?

我无法在Django API中解决CORS问题。当我调用此API时,我得到一个错误:

在’http://localhost:8000/”从源头上说,
‘http://localhost’已被CORS策略阻止:响应
飞行前请求未通过访问控制检查:否
“Access Control Allow Origin”标头出现在请求的服务器上
资源如果不透明的响应满足您的需要,请设置请求的
模式设置为“无cors”,以获取禁用cors的资源

为了启用CORS,我做了pip安装django-CORS-headers,并将以下代码添加到settings.py

已安装的应用程序=[
“django.contrib.admin”,
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“护卫舰”,
]
中间件\u类=[
“corsheaders.middleware.Corsmidlware”,
'django.middleware.common.CommonMiddleware',
'django.middleware.security.SecurityMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
'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.xFrameOptions中间件',
]
CORS_原产地_白名单=[
'本地主机:80',
'本地主机:8000',
'127.0.0.1:8000'
]

我应该说我在Docker上运行我的项目。这是docker compose.yml:

版本:“2”
服务:
django docker:
建造:
上下文:。
dockerfile:dockerfile.django
容器名称:my.django
图片:我的django
端口:
- 8000:8000
webapp docker:
建造:
上下文:。
dockerfile:dockerfile.webapp
容器名称:my.webapp
图片:我的网络
端口:
- 80:80

您需要将corsheaders.middleware.corsmidleware中间件添加到settings.py中的中间件类中:

中间件\u类=(
“corsheaders.middleware.Corsmidlware”,
'django.middleware.common.BrokenLinkEmailsMiddleware',
'django.middleware.common.CommonMiddleware',
#...
)

中间件类中有重复的django.middleware.common.CommonMiddleware

然后,您可以通过添加以下设置为所有域启用CORS:

CORS\u ORIGIN\u ALLOW\u ALL=True

或仅为指定域启用CORS:

CORS\u ORIGIN\u ALLOW\u ALL=False
CORS_原产地_白名单=(
'http://localhost:8000',
)

发表评论