解决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)是请求/响应处理的管道,它的工作原理是:

  1. 当一个请求进来时,Django 会按顺序执行 MIDDLEWARE 列表中定义的中间件
  2. 只要中间件类能被正确导入和实例化,它就能执行其功能

所以,

  1. corsheaders.middleware.CorsMiddleware 只要能被正确导入,就能在请求处理过程中添加 CORS 相关的响应头
  2. 它不依赖于数据库模型、模板、静态文件等需要 INSTALLED_APPS 的功能
  3. 实际上,很多第三方中间件都不需要在 INSTALLED_APPS 中注册

因此,corsheaders 中间件确实可以在不添加到 INSTALLED_APPS 的情况下正常工作,在 MIDDLEWARE 中正确配置就足够了。



章节列表