2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.对于不同的二级域名中的cookie共享
php中的setcookie函数的第四个参数,只写一级域名即可,如:

 setcookie('key', $value, $ttl, '.baidu.com');

2.网页中用iframe嵌入一个不同源的网页
不同源则双方无法拿到对方的dom,即下面的语句会报错:

document.getElementById("myIFrame").contentWindow.document;

方法一:利用js设置document.domain 实现跨域,前提条件:这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则会报"参数无效错误。"。
比如在:aaa.com的一个网页(a.html)里面利用iframe引入了bbb.com里的一个网页(b.html)。
这时在a.html里面可以看到b.html里的内容,但是却不能利用javascript来操作它。因为这两个页面属于不同的域,在操作之前,js会检测两个页面的域是否相等,如果相等,就允许其操作,如果不相等,就会拒绝操作。
这里也不可能把a.html与b.html利用JS改成同一个域的。因为它们的基础域名不相等。(强制用JS将它们改成相等的域的话会报"参数无效错误。")
有另一种情况,两个子域名:
  aaa.xxx.com
  bbb.xxx.com
aaa里的一个网页(a.html)引入了bbb 里的一个网页(b.html),这时a.html里同样是不能操作b.html里面的内容的。因为document.domain不一样,一个是aaa.xxx.com,另一个是bbb.xxx.com。这时我们就可以通过Javascript,将两个页面的domain改成一样的,需要在a.html里与b.html里都加入代码如下:

document.domain = "xxx.com";

这样这两个页面就可以互相操作了。也就是实现了同一基础域名之间的"跨域"。

方法二:如果只是想在两个窗口间传递数据,可以利用url中的hash
父窗口可以把信息,写入子窗口的hash中:

    var src = originURL + '#' + data;document.getElementById('myIFrame').src = src;

子窗口通过监听hashchange事件得到通知,获取数据:

window.onhashchange = function() {var message = window.location.hash;// ...}

同样的,子窗口也可以改变父窗口的片段标识符:

    parent.location.href= target + "#" + hash;

方法三:利用html5提供的接口方法window.postMessage,在跨窗口通信中,允许这两个窗口不同源。
父窗口http://aaa.com向子窗口http://bbb.com发消息,调用postMessage方法就可以了:

    var popup = window.open('http://bbb.com', 'title');popup.postMessage('Hello World!', 'http://bbb.com');

postMessage方法的第一个参数是具体的信息内容,第二个参数是接收消息的窗口的源(origin),即"协议 + 域名 + 端口"。也可以设为*,表示不限制域名,向所有窗口发送。
子窗口向父窗口发送消息的写法类似:

    window.opener.postMessage('Nice to see you', 'http://aaa.com');

父窗口和子窗口都可以通过message事件,监听对方的消息:

    window.addEventListener('message', function(e) {console.log(e.data);},false);//message事件的事件对象event,提供以下三个属性://event.source:发送消息的窗口//event.origin: 消息发向的网址//event.data: 消息内容

3.通过ajax向不同的源请求数据
方法一:JSONP
它的基本思想是,网页通过添加一个<script>元素,向服务器请求JSON数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。但是它只能发送GET请求。
首先,网页动态插入<script>元素,由它向跨源网址发出请求:

    function addScriptTag(src) {var script = document.createElement('script');script.setAttribute("type","text/javascript");script.src = src;document.body.appendChild(script);}window.onload = function () {addScriptTag('http://example.com/ip?callback=foo');}function foo(data) {console.log('Your public IP address is: ' + data.ip);};

服务器收到这个请求以后,会将数据放在回调函数的参数位置,以字符串的形式返回:

    echo 'foo({"ip": "8.8.8.8"})';

由于<script>元素请求的脚本,直接作为代码运行。这时,只要浏览器定义了foo函数,该函数就会立即执行。

方法二:CORS

比较复杂 http://www.ruanyifeng.com/blog/2016/04/cors.html

转载于:https://my.oschina.net/codespring/blog/715725

浏览器的同源限制解决方案相关推荐

  1. 浏览器的同源策略与跨域问题的解决方案

    浏览器的同源策略与跨域问题的解决方案 参考文章: (1)浏览器的同源策略与跨域问题的解决方案 (2)https://www.cnblogs.com/yanggb/p/10735763.html 备忘一 ...

  2. 美多商城后台管理之登录、浏览器的同源策略

    登录 后台管理中我们首先需要完成登录功能,我们可以通过改写美多表单登录来完成相应的功能. 在后台登录中,由于我们前端服务和后端服务的域名不一样,所以我们首先解决跨域问题. 登后的状态保持我们采用jwt ...

  3. html 布局兼容性,HTML+CSS入门 浏览器兼容性问题及解决方案

    本篇教程介绍了HTML+CSS入门 浏览器兼容性问题及解决方案,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门. < 问题一:不同浏览器的标签默认的外补丁和内补丁不同 问题现象: ...

  4. 常见几种浏览器兼容性问题与解决方案

    常见几种浏览器兼容性问题与解决方案 参考文章: (1)常见几种浏览器兼容性问题与解决方案 (2)https://www.cnblogs.com/lmaster/p/6385035.html 备忘一下.

  5. echarts在360中以及IE8浏览器不兼容:解决方案

    echarts在360中以及IE8浏览器不兼容:解决方案 参考文章: (1)echarts在360中以及IE8浏览器不兼容:解决方案 (2)https://www.cnblogs.com/Unrmk- ...

  6. 【转】常见浏览器兼容性问题与解决方案css篇

    小满语:说到兼容性问题,不得不说一下IE浏览器,尤其是IE9以前,兼容性差的要哭,来,擦擦眼泪,学习一下兼容性问题的解决方案~本篇主要是布局后加样式后导致浏览器显示不统一的情形: 所谓的浏览器兼容性问 ...

  7. 常见浏览器兼容性问题与解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求 ...

  8. IOS 企业版发布后,用户通过sarafi浏览器安装无效的解决方案

    关于IOS7.1企业版发布后,用户通过sarafi浏览器安装无效的解决方案: 通过测试,已经完美解决. 方案一: http://blog.csdn.net/qi_ruihua/article/deta ...

  9. 常见浏览器兼容性问题与解决方案?

    (1)浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同  问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大. 碰到频率:100% 解决方案:CSS ...

最新文章

  1. 在linux环境下重启oracle数据库,解决密码过期的问题
  2. 【C语言】 Linux内核源码-- do...while(0)解析
  3. react 条件渲染
  4. 使用Apache Mahout创建在线推荐系统
  5. echarts横轴展示不全使用滚动条(dataZoom)的方法
  6. sql批量删除和条件查询
  7. 苹果mac微软表格处理工具:microsoftexcel
  8. h5+js实现本地文件读取和写入-web前端教程
  9. 上位机和下位机计算机联锁,上位机与下位机之间的连接
  10. 手机输入法带拼音声调_五笔已经淘汰,拼音到达瓶颈,百度重拳出击,全新输入方式来袭!...
  11. 计算机软件安装流程,计算机软件系统快速安装流程简介
  12. Java角度制向弧度制转化
  13. 360屏保广告彻底关闭教程
  14. c语言 不同的io口组成数组,本章内容并行IO口电路结构认识C语言C语言基本语句C语.ppt...
  15. 行业内参:2019年支付监管框架将有大调整 线上线下牌照合并重划
  16. Oulipo HDU - 1686 (kmp初见讨伐!)
  17. 初识swipe.js
  18. 数据集划分、label生成及按label将图片分类到不同文件夹
  19. 谢希仁计算机网络第七版答案
  20. 《牧羊少年的奇幻之旅》-保罗 柯艾略

热门文章

  1. Python DataFrame数据清洗后行索引不连续——reset_index
  2. 如何在GraphPad Prism 9图表上添加图片或其他对象
  3. 页面多条件组合查询功能 代码 如何写效率高_Jeecg Boot 2.2 首个里程碑版本发布,低代码平台
  4. C语言 | 基于51单片机实现MPU6050的卡尔曼滤波算法(代码类1)
  5. python程序的基本框架_Python PyQt学习随笔:PyQt主程序的基本框架
  6. python如何判断字符串是否包含某些汉字_Python如何判断一个字符串是否包含指定子字符串...
  7. c# 微服务学习_微服务:学习几个容易混淆的URL注解
  8. 英语语法---不定式短语详解
  9. 第四范式先知(Sage)率先通过欧盟GDPR认证
  10. 听说GNN大有可为,从这篇开始学以致用