python解决跨域_Python | 跨域
今日目标:带你们领略跨域的奥秘~
1,为什么会出现跨域问题?
2,跨域的定义是什么?
3,如何避免跨域?
我们平常写代码的时候,应该很少碰到这个问题,因为所有的逻辑代码都是写在同一个项目中,那到底什么时候会出现跨域?其实这里面牵涉到一个同源策略问题,接下来我们先探讨一下同源策略,接着进一步解析跨域。
同源策略是浏览器的一个安全功能,不同源的客户端脚本(js文件)在没有明确授权的情况下,不能读写对方资源。只有同一个源的脚本赋予dom、读写cookie、session、ajax等操作的权限。
同源政策的目的:是为了保证用户信息的安全,防止恶意的网站窃取数据。
我们都知道 url由协议、域名、端口和路径组成,如果两个url的协议、域名和端口相同,则认为这两个url是同源的,否则,就为跨域。
举个例子:
前段时间我们接了一个项目,采用的开发模式是前后端分离,我们的前端和后端分别是两个不同的端口,这就涉及到跨域访问数据的问题,因为浏览器的同源策略,默认是不支持两个不同域名间相互访问数据的,而我们需要在两个域名间相互传递数据,这时,就出现了跨域问题,接下来跟大家分享一下如何解决这种问题。
我们项目使用的是django框架,我们使用django-cors-headers扩展,来解决后端对跨域访问的支持。
凡是出现在白名单中的域名,都可以访问后端。
CORS_ALLOW_CREDENTIALS 指明在跨域访问中,后端是否支持对cookie的操作。
django-cors-headers如何使用?具体操作如下:
1,安装
pip install django-cors-headers
2,添加应用
INSTALLED_APPS = (
...
'corsheaders',
...
)
3,设置中间层
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
...
]
4,添加白名单
# CORS
CORS_ORIGIN_WHITELIST = (
'127.0.0.1:8080',
'localhost:8080',
'www.xxx.xx:8080',
'api.xxx.xx:8000'
)
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
具体的流程如下:
1、浏览器会第一次先发送options请求询问后端是否允许跨域,后端查询白名单中是否有这两个域名
2、如过域名在白名单中则在响应结果中告知浏览器允许跨域
3、浏览器第二次发送post请求,携带用户登录数据到后端,完成登录验证操作
解决这种跨域问题,其实还有其他的解决方法,后面我们再慢慢分享
作者:CarryLili
python解决跨域_Python | 跨域相关推荐
- python 解决最佳方案_python使用列表的最佳方案
python使用列表的最佳方案,列表,方式,方法,函数,表达式 python使用列表的最佳方案 易采站长站,站长之家为您整理了python使用列表的最佳方案的相关内容. 经常写Python程序的人,列 ...
- python解决约瑟夫问题_Python实现约瑟夫环问题的方法
本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...
- 用python解决生活问题_Python解决生活问题之闹钟程序的实现
昨天下班回家忘了带手机充电器,手机熄火没闹钟了,可现实是迟到30分钟以内要罚100RMB,超过30分钟算旷工要扣除3天工资,想想这代价,好吧,还是自己动手写一个闹钟程序吧! 系统环境: Linux M ...
- python解决物理问题_python递归解物理题
课程设计:丁大喵 文章编辑:丁丁猫 关键词:递归 电阻 全局变量 This resistive network formsan infinite binary tree--every branch s ...
- 【python学习笔记】关于python Flask前后端分离跨域问题
关于python Flask前后端分离跨域问题 前后端分离过程中,前后端对接测试难免遇到跨域问题.因为是个新司机,所以在我经过一天的测试,才找到解决办法=-= 第一种方法 from functools ...
- 用P3P header解决IE下iframe跨域访问时候session丢失的问题
用P3P header解决IE下iframe跨域访问时候session丢失的问题 整合客户的登录时,或者其他一个网站通过iframe时,特别是一个http页面,访问一个https页面时,常常会sess ...
- [转]html5: postMessage解决跨域和跨页面通信的问题
[转]html5: postMessage解决跨域和跨页面通信的问题 参考文章: (1)[转]html5: postMessage解决跨域和跨页面通信的问题 (2)https://www.cnblog ...
- 解决Canvas.toDataURL 图片跨域问题
解决Canvas.toDataURL 图片跨域问题 参考文章: (1)解决Canvas.toDataURL 图片跨域问题 (2)https://www.cnblogs.com/ajg016/p/547 ...
- python爬虫跨域_AJAX跨域简单讲解【Python版】
总结自JAVA,这里改成了Python. 什么是AJAX跨域 只要协议.域名.端口有任何一个不同,都被当作是不同的域,不同域之间的请求就是跨域操作.AJAX跨域就是AJAX在A域下对B域发送了请求,一 ...
最新文章
- Linux 下 进程运行时内部函数耗时的统计 工具:pstack,strace,perf trace,systemtap
- 动力节点的课堂笔记_男孩把历史笔记画成“漫画”,同学成小粉丝,网友:别人家的孩子...
- 简洁高效的linux kfifo环形缓冲区
- ssh反向主动连接 及脚本加密
- 程序员高薪盛宴背后:程序员正在消失?
- css3 选择器_CSS 3
- 只用html5与CSS做一个简单的页面,HTML+CSS基础训练之做一个简单页面的布局
- 经典面试题:链表的相交与环问题
- [Python图像处理] 十八.图像锐化与边缘检测之Scharr算子、Canny算子和LOG算子
- python logging使用_Python实战之logging模块使用详解
- 算法梳理之LightGBM
- DeepDream网络
- JavaScript成语消消乐
- 输入大写字母,将大写字母转换为小写字母
- 如何录用有竞业限制协议的员工?
- ipscan(ip端口扫描工具) 2.21 中文绿色版 局域网ip端口扫描神器
- 关于android studio menu键的问题
- [A133 Android11] 连接pc板子掉电
- 当今世界最NB的25位大数据科学家
- SpringDataJPA学习笔记