如何依据django-cors-header文档在settings.py中配置带值的自定义请求头?
如何在Django中配置CORS并添加自定义请求头
my-custom-header? 嘿,我来帮你搞定这个配置问题!要同时设置CORS支持和自定义请求头,咱们按照以下步骤来操作:
第一步:配置django-cors-headers(处理跨域请求)
首先得确保你已经安装了django-cors-headers包,如果还没装,先通过pip安装:
pip install django-cors-headers
接下来在settings.py里做这些配置:
- 把
corsheaders添加到INSTALLED_APPS:
INSTALLED_APPS = [ # 其他已有的应用 'corsheaders', ]
- 添加CORS中间件,注意顺序很重要,要把它放在
django.middleware.common.CommonMiddleware之前:
MIDDLEWARE = [ # 其他中间件 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 其他中间件 ]
- 配置允许的跨域源(根据你的实际需求设置,生产环境建议指定具体域名,不要全开):
# 允许指定的源 CORS_ALLOWED_ORIGINS = [ "https://your-frontend-app.com", "http://localhost:3000", # 本地开发常用 ] # 如果是开发环境需要允许所有源(生产环境禁用!) # CORS_ALLOW_ALL_ORIGINS = True
第二步:添加自定义请求头my-custom-header
根据django-cors-headers的官方配置规则,要让跨域请求能携带自定义头,需要把它加入允许的头列表;如果还要让前端能读取响应中的这个头,还要把它加入暴露的头列表:
- 扩展默认允许的请求头:
from corsheaders.defaults import default_headers CORS_ALLOW_HEADERS = default_headers + ( 'my-custom-header', )
这样Django就会接受带有my-custom-header的跨域请求了。
- (可选)如果需要让前端能读取响应中的
my-custom-header值,添加到暴露头列表:
CORS_EXPOSE_HEADERS = [ 'my-custom-header', ]
- 如果是要在Django的响应中返回
my-custom-header,可以在视图函数里手动设置:
from django.http import HttpResponse def example_view(request): response = HttpResponse("处理完成") response['my-custom-header'] = "你想要设置的自定义值" return response
这样配置之后,你的Django项目就能正常处理带my-custom-header的跨域请求,也能在响应中返回这个自定义头啦!
内容的提问来源于stack exchange,提问作者acquayefrank




