0%

django-跨域支持配置

django-跨域支持配置

# 安装模块
pip3 install django-cors-headers



# books_demo/settings.py
INSTALLED_APPS = [
...
# demo
'corsheaders',
...
]

MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', # 需注意与其他中间件顺序,这里放在最前面即可
...
]

# 支持跨域配置开始
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

第二种方式:

您遇到的错误是由于跨源资源共享(CORS)策略的限制。当您的前端应用(位于 http://localhost:5173)尝试访问后端API(位于 http://localhost:8000)时,浏览器会执行一个预检请求(preflight request)来检查服务器是否允许跨域请求。如果服务器没有在响应中包含适当的 Access-Control-Allow-Origin 头部,浏览器就会阻止该请求。

解决方案

由于您的 Django 项目中已经安装了 corsheaders 并且将其添加到了 INSTALLED_APPSMIDDLEWARE 中,您需要确保配置了 corsheaders 以允许来自 http://localhost:5173 的请求。

步骤 1: 配置 CORS 设置

AccountingSystem/settings.py 文件中,添加或修改以下设置以允许特定的源或所有源进行跨域请求:

Python


采纳
复制
新建文件
# 在文件末尾或适当的位置添加以下配置

# CORS 设置
CORS_ALLOWED_ORIGINS = [
"http://localhost:5173", # 允许的前端源
]

# 如果您希望允许所有源,可以使用以下设置(但出于安全考虑,通常不推荐在生产环境中这样做)
# CORS_ALLOWED_ORIGINS = [
# "*"
# ]

# 可选:允许携带认证信息(如 Cookies)
CORS_ALLOW_CREDENTIALS = True

# 可选:设置允许的 HTTP 方法
CORS_ALLOWED_METHODS = [
'GET',
'POST',
'PUT',
'DELETE',
'OPTIONS'
]

# 可选:设置允许的 HTTP 头
CORS_ALLOWED_HEADERS = [
'content-type',
'authorization'
]

步骤 2: 确保中间件顺序正确

corsheaders.middleware.CorsMiddleware 应该放在可能修改响应的中间件之前,通常是在 django.middleware.common.CommonMiddleware 之后。从您提供的配置来看,顺序似乎是正确的。

步骤 3: 重启 Django 服务器

修改设置后,您需要重启 Django 开发服务器以使更改生效。

步骤 4: 测试

在浏览器中重新加载您的前端应用并尝试再次发起请求,检查是否还会出现 CORS 错误。

通过以上步骤,您应该能够解决因 CORS 策略导致的请求被阻止的问题。如果问题依旧存在,请检查是否有其他中间件或设置可能影响到 CORS 头部的设置。