要在Django-Ninja项目中实现跨域(CORS),你可以使用django-cors-headers
库,这是一个专门用于处理跨域资源共享(CORS)问题的Django应用程序。以下是具体的步骤和配置:
-
安装依赖:
使用pip安装django-cors-headers
:pip install django-cors-headers
-
修改设置:
在你的Django项目的settings.py
文件中进行以下修改:- 注册应用:在
INSTALLED_APPS
列表中添加'corsheaders'
:python">INSTALLED_APPS = [# ...'corsheaders',# ... ]
- 添加中间件:在
MIDDLEWARE
列表中添加'corsheaders.middleware.CorsMiddleware'
,并确保它位于'django.middleware.common.CommonMiddleware'
之前:python">MIDDLEWARE = [# ...'corsheaders.middleware.CorsMiddleware',# 'django.middleware.common.CommonMiddleware', # 确保CorsMiddleware在其之前# ... ]
- 配置CORS设置:在
settings.py
文件中添加CORS的配置项。你可以根据需求配置允许的源、请求方法和请求头:python">CORS_ALLOW_ALL_ORIGINS = True # 允许所有源跨域 # 或者配置白名单 # CORS_ALLOWED_ORIGINS = [ # 'http://example.com', # 'https://sub.example.com', # ] 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', ] CORS_ALLOW_CREDENTIALS = True # 如果需要跨域请求携带凭证(如Cookies)
- 注册应用:在
以上步骤完成后,你的Django-Ninja项目应该能够处理跨域请求了。请注意,允许所有源(CORS_ALLOW_ALL_ORIGINS = True
)可能会带来安全风险,因此在生产环境中,建议仅允许必要的源进行跨域请求。