原理核心:window对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持不变。
依此原理,我们可以在页面A中用iframe加载其他域的页面B,而页面B中用JavaScript把需要传递的数据赋值给 window.name,页面A的iframe加载完成之后,页面A修改iframe的地址,将其变成同域的一个地址,然后就可以读出window.name的值了。

例:有两个网站www.a.com和www.b.com,我们要在www.a.com/a.html下获取www.b.com/data.html数据。
我们需要三个文件:
www.a.com 下的 a.html 获取数据并显示
www.b.com 下的data.html 提供数据
www.a.com 下的proxy.html 代理文件,与a.html同一域下,一般为空html文件。
www.b.com下的data.html如下:
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Insert title here</title>
</head>
<body><script type="text/javascript">//添加需要传递的数据,大小一般为2M,IE和firefox下可以大至32M左右window.name = '[{"name":"test1"},{"name":"test2"}]';</script>
</body>
</html>

www.a.com下的proxy.html如下:
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Insert title here</title>
</head>
<body><!-- 空的html文件 -->
</body>
</html>

www.a.com下的a.html如下:
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Insert title here</title>
</head>
<body><!-- 用于引用www.b.com/data.html文件 -->
<iframe id="iframe" src=""></iframe><!-- 显示获取到的数据 -->
<div id="data"></div><script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript">
var ifr = document.getElementById("iframe");
ifr.src = "http://www.b.com/data.html";
if (ifr.attachEvent) {ifr.attachEvent("onload", loadfunc);
} else {ifr.onload = loadfunc;
}var state = 0;
function loadfunc() {if(state == 0) {state = 1;ifr.contentWindow.location = "http://www.a.com/proxy.html";} else {var data = ifr.contentWindow.name;$.each($.parseJSON(data), function(i, v) {$("#data").append(v.name);});//销毁iframe,保证安全ifr.contentWindow.document.write("");ifr.contentWindow.close();document.body.removeChild(ifr);}
}
</script>
</body>
</html>

PHP下ajax跨域的解决方案之window.name相关推荐

  1. PHP下ajax跨域的解决方案之CORS

    PHP下ajax跨域的解决方案之CORS 参考文章: (1)PHP下ajax跨域的解决方案之CORS (2)https://www.cnblogs.com/jkko123/p/6294625.html ...

  2. ajax中cors解决跨域,AJAX 跨域 CORS 解决方案

    两种跨域方法 在 Javascript 中跨域访问是比较常见的事情 就像现在比较流行写单页应用,而单页应用在访问 API 的时候就会有跨域的问题 要解决跨域的问题,其实也并不复杂,有两种方案可以选择 ...

  3. 关于Ajax跨域的解决方案

    关于Ajax跨域的解决方案和一些个人理解 Ajax跨域的原因 Ajax跨域的解决方案 Ajax跨域的原因 浏览器限制 跨域(协议.主机名.端口有一个不同就会产生跨域) xhr请求(XMLHttpReq ...

  4. 【JS】AJAX跨域-JSONP解决方案(一)

    [JS]AJAX跨域-JSONP解决方案(一) 参考文章: (1)[JS]AJAX跨域-JSONP解决方案(一) (2)https://www.cnblogs.com/h--d/p/11470534. ...

  5. js ajax 跨域问题 解决方案

    什么是跨域问题? 跨域问题来源于JavaScript的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下 ...

  6. ajax跨域情况解决方案,ajax跨域解决方案.docx

    ajax跨域解决方案 ajax跨域解决方案 篇一:使用JSONP解决Ajax跨域访问问题 使用JSONP解决Ajax跨域访问问题 JSONP(JSON with Padding)是JSON的一种&qu ...

  7. ajax跨域问题解决方案

    今天来记录一下关于ajax跨域的一些问题.以备不时之需. 跨域 同源策略限制 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性.也就是说,受到请求的 URL 的域必须与当前 Web 页面 ...

  8. ajax跨越html,ajax跨域的解决方案

    什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容(参考js的同源策略). 但是我们项目开发过程中,经常会遇到在一个页面的JS代码中, ...

  9. PHP下实现两种ajax跨域的解决方案之jsonp

    H5开发中使用ajax调用数据接口, 如果接口文件不在同域名下会提示跨域错误(No 'Access-Control-Allow-Origin' header is present on the req ...

  10. Ajax跨域请求解决方案——jsonp

    转自:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 1.一个众所周知的问题,Ajax直接请求普通 ...

最新文章

  1. maven生命周期理解
  2. python 习题集锦
  3. HDU 6052 To my boyfriend(容斥+单调栈)
  4. 6套制造业大数据解决方案免费送,内含详细步骤手把手教会你
  5. 【Luogu】P3950部落冲突(树链剖分)
  6. servlet规范定义的Servlet生命周期
  7. python中 numpy转list list 转numpy
  8. C#事件(event)解析(转)
  9. Android 仿网易新闻底部Tab
  10. AsteriskNow 实用总结
  11. 信号与系统——傅里叶变换
  12. AutoCAD工程制图 常见命令与注意事项全总结(120例)
  13. 华为魔术2手机拆机图解_华为手机荣耀Magic2手机维修拆机教程
  14. python毕业论文参考文献格式_毕业论文参考文献规范格式
  15. 微信公众号笔记(一)
  16. html把图片放到文章右边,怎么在文章中把图片放在文字的左边、右边、中 – 手机爱问...
  17. UEFI启动+GPT分区
  18. appium 报错:Original error:Could not proxy command to remote server. Original error:socket hang up
  19. java mysql geometry_java程序操作Geometry对象
  20. android 自动化 微信,C#手把手教你玩微信自动化

热门文章

  1. java语言打印上三角和下三角,进一步得到九九乘法表
  2. jenkins, docker-composer
  3. 刷新后保持大分类和小分类的展开状态
  4. qt初步---Qt实现软件从Windows到Linux跨平台
  5. Leetcode 627. Swap Salary
  6. [转]Android调用so文件(C代码库)方法详解
  7. ACE6.3.3在Linux(CentOS7.0)下的安装和使用
  8. VC 2012 中调用WebBrowser简单的实现过程(图解过程)
  9. ButterKnife的安装与使用以及ButterKnife右键不显示的大坑
  10. 一.Spring boot食用指南:HELLO WORLD