解决Django跨域问题
2024-12-17
本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明: 本博客欢迎转发,但请保留原作者信息!
github地址:atanx
新浪微博:@蜀山掌门V
QQ:365039667
博客地址:江斌的博客
内容仅供学习参考,如有不当引用,请告知博主。
在django 中,如果需要解决跨域问题,可以在settings.py中添加以下配置:
MIDDLEWARE = [
# 添加corsheaders中间件
'corsheaders.middleware.CorsMiddleware',
# ...
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_HEADERS = (
'content-disposition', 'accept-encoding', 'UI-EVENT-ID',
'content-type', 'accept', 'origin', 'authorization',
)
在 Django 中,中间件(Middleware)是请求/响应处理的管道,它的工作原理是:
- 当一个请求进来时,Django 会按顺序执行 MIDDLEWARE 列表中定义的中间件
- 只要中间件类能被正确导入和实例化,它就能执行其功能
所以,
- corsheaders.middleware.CorsMiddleware 只要能被正确导入,就能在请求处理过程中添加 CORS 相关的响应头
- 它不依赖于数据库模型、模板、静态文件等需要 INSTALLED_APPS 的功能
- 实际上,很多第三方中间件都不需要在 INSTALLED_APPS 中注册
因此,corsheaders 中间件确实可以在不添加到 INSTALLED_APPS 的情况下正常工作,在 MIDDLEWARE 中正确配置就足够了。