【Python-Django】浏览器同源策略
1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。
同源策略是浏览器的一个安全功能,不同源的客户端脚本(js文件)在没有明确授权的情况下,不能读写对方资源。只有同一个源的脚本赋予dom、读写cookie、session、ajax等操作的权限。
url由协议、域名、端口和路径组成,如果两个url的协议、域名和端口相同,则这两个url是同源的。
url | 是否同源 | 原因 |
---|---|---|
http://www.example.com/dir2/other.html | 是 | 协议、端口、主机相同 |
https://example.com/dir/other.html | 否 | 不同的协议(https) |
http://www.example.com:81 | 否 | 端口不同(81) |
http://news.example.com/ | 否 | 域名不同 |
跨域CORS
现在,前端与后端分别是不同的端口,这就涉及到跨域访问数据的问题,因为浏览器的同源策略,默认是不支持两个不同域名间相互访问数据,而我们需要在两个域名间相互传递数据,这时我们就要为后端添加跨域访问的支持。
我们使用django-cors-headers来解决后端对跨域访问的支持。
使用django-cors-headers扩展
参考文档https://github.com/ottoyiu/django-cors-headers/
安装
1 | pip install django - cors - headers |
添加应用 在setting.py
1 2 3 4 5 | INSTALLED_APPS = ( ... 'corsheaders' , ... ) |
中间层设置
1 2 3 4 | MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware' , ... ] |
添加白名单
1 2 3 | # CORS CORS_ORIGIN_WHITELIST = ( '127.0.0.1:8080' , '127.0.0.1:8000' , 'localhost:8080' , ) CORS_ALLOW_CREDENTIALS = True # 允许携带cookie |
- 凡是出现在白名单中的域名,都可以访问后端接口
- CORS_ALLOW_CREDENTIALS 指明在跨域访问中,后端是否支持对cookie的操作。
多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App