今日目标:带你们领略跨域的奥秘~

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 | 跨域相关推荐

  1. python 解决最佳方案_python使用列表的最佳方案

    python使用列表的最佳方案,列表,方式,方法,函数,表达式 python使用列表的最佳方案 易采站长站,站长之家为您整理了python使用列表的最佳方案的相关内容. 经常写Python程序的人,列 ...

  2. python解决约瑟夫问题_Python实现约瑟夫环问题的方法

    本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...

  3. 用python解决生活问题_Python解决生活问题之闹钟程序的实现

    昨天下班回家忘了带手机充电器,手机熄火没闹钟了,可现实是迟到30分钟以内要罚100RMB,超过30分钟算旷工要扣除3天工资,想想这代价,好吧,还是自己动手写一个闹钟程序吧! 系统环境: Linux M ...

  4. python解决物理问题_python递归解物理题

    课程设计:丁大喵 文章编辑:丁丁猫 关键词:递归 电阻 全局变量 This resistive network formsan infinite binary tree--every branch s ...

  5. 【python学习笔记】关于python Flask前后端分离跨域问题

    关于python Flask前后端分离跨域问题 前后端分离过程中,前后端对接测试难免遇到跨域问题.因为是个新司机,所以在我经过一天的测试,才找到解决办法=-= 第一种方法 from functools ...

  6. 用P3P header解决IE下iframe跨域访问时候session丢失的问题

    用P3P header解决IE下iframe跨域访问时候session丢失的问题 整合客户的登录时,或者其他一个网站通过iframe时,特别是一个http页面,访问一个https页面时,常常会sess ...

  7. [转]html5: postMessage解决跨域和跨页面通信的问题

    [转]html5: postMessage解决跨域和跨页面通信的问题 参考文章: (1)[转]html5: postMessage解决跨域和跨页面通信的问题 (2)https://www.cnblog ...

  8. 解决Canvas.toDataURL 图片跨域问题

    解决Canvas.toDataURL 图片跨域问题 参考文章: (1)解决Canvas.toDataURL 图片跨域问题 (2)https://www.cnblogs.com/ajg016/p/547 ...

  9. python爬虫跨域_AJAX跨域简单讲解【Python版】

    总结自JAVA,这里改成了Python. 什么是AJAX跨域 只要协议.域名.端口有任何一个不同,都被当作是不同的域,不同域之间的请求就是跨域操作.AJAX跨域就是AJAX在A域下对B域发送了请求,一 ...

最新文章

  1. Linux 下 进程运行时内部函数耗时的统计 工具:pstack,strace,perf trace,systemtap
  2. 动力节点的课堂笔记_男孩把历史笔记画成“漫画”,同学成小粉丝,网友:别人家的孩子...
  3. 简洁高效的linux kfifo环形缓冲区
  4. ssh反向主动连接 及脚本加密
  5. 程序员高薪盛宴背后:程序员正在消失?
  6. css3 选择器_CSS 3
  7. 只用html5与CSS做一个简单的页面,HTML+CSS基础训练之做一个简单页面的布局
  8. 经典面试题:链表的相交与环问题
  9. [Python图像处理] 十八.图像锐化与边缘检测之Scharr算子、Canny算子和LOG算子
  10. python logging使用_Python实战之logging模块使用详解
  11. 算法梳理之LightGBM
  12. DeepDream网络
  13. JavaScript成语消消乐
  14. 输入大写字母,将大写字母转换为小写字母
  15. 如何录用有竞业限制协议的员工?
  16. ipscan(ip端口扫描工具) 2.21 中文绿色版 局域网ip端口扫描神器
  17. 关于android studio menu键的问题
  18. [A133 Android11] 连接pc板子掉电
  19. 当今世界最NB的25位大数据科学家
  20. SpringDataJPA学习笔记

热门文章

  1. Mac 电脑下载 AppStore 中的 ipa 软件包详细流程
  2. Android 微软雅黑、仿宋、黑体的使用
  3. 大数据项目实战——电信业务大数据分析系统
  4. 装逼神器,5 行 Python 代码 实现一键批量扣图
  5. 如何使用 Enterprise Architect 画 UML
  6. 高级查询组件下拉框联动(三)
  7. 为什么是UUID做主键
  8. IIS 发生意外错误 0x8ffe2740
  9. java线程之可重入锁
  10. win10 查看笔记本电池循环次数