Django解决跨域请求的问题
CORS: cross-origin resource sharing 跨域资源共享
CORS 需要浏览器和服务器同时支持,整个CORS的过程,都是浏览器自动完成,对于用户来说是无感的,先要实现 CORS 的关键是服务器,只要服务器实现了 CORS 接口,就可以跨域通信
同源策略: 浏览器最核心最基础的安全功能
何为同源:
url的协议,主机,端口完全一致的时候就是同源(端口默认是80)
http://example.com/
http://example.com:80/
http://example.com/path
上面的每个url都是同源的
以下每个资源都是不同源的
http://example.com/
http://example.com:8080/
http://www.example.com/
https://example.com/
https://www.baidu.com/
何为同源策略,简单理解,就当打开某个页面后,这个页面上的ajax请求默认只能向和页面同源的url发送http请求
django-cors-headers 是一个处理cors所需服务器头信息的一个django应用
1、安装django-cors-headers模块
pip install django-cors-headers
2、插入Django的APP配置中
1 2 3 | # 修改settings.py中的INSTALLED_APPS配置 INSTALLED_APPS = [ 'corsheaders' ] |
3、注册CorsMiddleware中间件
1 2 3 4 5 6 7 8 9 10 11 12 | jdango查找中间件由上到下,注意要放到 CommonMiddleware 上面 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware' , 'django.contrib.sessions.middleware.SessionMiddleware' , 'corsheaders.middleware.CorsMiddleware' , # CORS中间件 'django.middleware.common.CommonMiddleware' , 'django.middleware.csrf.CsrfViewMiddleware' , 'django.contrib.auth.middleware.AuthenticationMiddleware' , 'django.contrib.messages.middleware.MessageMiddleware' , 'django.middleware.clickjacking.XFrameOptionsMiddleware' , ] |
4、跨域设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 服务器运行跨域的域名 CORS_ALLOWED_ORIGINS = [ # 设置允许跨域的域名 'http://localhost:8000' , 'http://127.0.0.1:8001' , ] # 允许cookie跨域 # CORS_ALLOW_CREDENTIALS = True # 允许所有来源跨域 CORS_ALLOW_ALL_ORIGINS = True |
具体介绍可以查看 https://pypi.org/project/django-cors-headers/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?