You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何依据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的官方配置规则,要让跨域请求能携带自定义头,需要把它加入允许的头列表;如果还要让前端能读取响应中的这个头,还要把它加入暴露的头列表:

  1. 扩展默认允许的请求头:
from corsheaders.defaults import default_headers

CORS_ALLOW_HEADERS = default_headers + (
    'my-custom-header',
)

这样Django就会接受带有my-custom-header的跨域请求了。

  1. (可选)如果需要让前端能读取响应中的my-custom-header值,添加到暴露头列表:
CORS_EXPOSE_HEADERS = [
    'my-custom-header',
]
  1. 如果是要在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

火山引擎 最新活动