环境要求:
支持 Python 3.7 到 3.11。
支持 Django 3.2 到 4.1。
设置:
安装库,从pip安装:
python -m pip install django-cors-headers
然后将其添加到您安装的应用程序中(添加子应用):
INSTALLED_APPS = [
... ,
"corsheaders" ,
... ,
]
确保添加尾随逗号,否则您可能会收到ModuleNotFoundError (请参阅此博客文章)。
您还需要添加一个中间件类来监听响应:
MIDDLEWARE = [
... ,
"corsheaders.middleware.CorsMiddleware" ,
"django.middleware.common.CommonMiddleware" ,
... ,
]
CorsMiddleware应放置在尽可能高的位置(中间件列表第一位即可),尤其是在任何可以生成响应的中间件之前,例如 Django 的
或 Whitenoise 的WhiteNoiseMiddleware。如果不是之前,它将无法将 CORS 标头添加到这些响应中。
配置:
在 Django 设置中配置中间件的行为。您必须至少设置以下三个设置之一:
-
CORS_ALLOWED_ORIGINS CORS_ALLOWED_ORIGIN_REGEXES CORS_ALLOW_ALL_ORIGINS
ur列表
Example:
CORS_ALLOWED_ORIGINS = [ "https://example.com", "https://sub.example.com", "http://localhost:8080", "http://127.0.0.1:9000", ]
正则
Example:
CORS_ALLOWED_ORIGIN_REGEXES = [ r"^https://\w+\.example\.com$", ]
CORS_ALLOW_ALL_ORIGINS: bool
CORS_ALLOW_ALL_ORIGINS = True #如果True,将允许所有来源。其他限制允许来源的设置将被忽略。默认为False。
将此设置为True可能很危险,因为它允许任何网站向您的网站发出跨域请求。通常,您需要使用CORS_ALLOWED_ORIGINS或CORS_ALLOWED_ORIGIN_REGEXES限制允许的来源列表。
以前此设置称为CORS_ORIGIN_ALLOW_ALL,它仍然作为别名使用,新名称优先。
官网链接:django-cors-headers · PyPI
个人踩坑:
配置好了后死活跨不了域,最后发现是运行的manger文件路径不对。
项目启动后可以留意一下根据那个配置文件启动 ,注意细节,over。