利用window.name实现跨域。
window.name
引用
一个字符串,存放了窗口的名称。这个名称是在open()方法创建窗口时指定的或者使用一个<frame>标记的name属性制定的。窗口的名称可以用作一个<a>或者<form>的target属性的值,以这种方式使用target属性声明了超链接文档或表单提交结果应该显示于指定的窗口或帧中。
window.name跨域主要利用iframe中的中内部更换页面,但是iframe的window.name值不会因为页面改变而改变。
域1的主要页面:
<!DOCTYPE html>
<html>
<head>
<title>father page</title>
</head>
<body>
<h1 class="title">Father page, host: <span></span></h1>
<form action="http://www.valley2.com/pro01-winname/login.php" target="rFrame">
<div>
<span>username:<span><input type="text" name="u" />
</div>
<div>
<span>password:<span><input type="text" name="p" />
</div>
<div>
<input type="submit" value="submit" />
</div>
</form>
<!--<iframe id="idFrame" name="rFrame" src=""></iframe>-->
<div id="idResult"></div>
<br><br><br>
<script>
//title
var h1Node = document.getElementsByClassName('title')[0];
var spanNode = h1Node.getElementsByTagName('span')[0];
spanNode.innerHTML = location.host;
var frame = document.createElement('iframe');
frame.setAttribute('name', 'rFrame');
document.body.appendChild(frame);
var status = 0;
frame.onload = function() {
if (status == 1) {
var window = frame.contentWindow;
var resultNode = document.getElementById('idResult');
resultNode.innerHTML = window.name;
} else if (status == 0) {
frame.contentWindow.location = 'http://www.valley.com/pro01-winname/proxy.html';
status = 1;
}
};
</script>
</body>
</html>
域1的跳转页面:
<div>proxy</div>
域2的数据页面:
<?php
if (isset($_GET['u']) && $_GET['u'] === 'valley'
&& isset($_GET['p']) && $_GET['p'] === 'password') {
$result = 'login';
} else {
$result = 'nologin';
}
echo '<script>';
echo "window.name='$result';";
echo '</script>';
分享到:
相关推荐
window.name解决跨域问题的文档,刚才网上发现的.也许有点作用
NULL 博文链接:https://yiminghe.iteye.com/blog/346796
本Demo实现了一个来自不同服务器的前端页面集成方案,页面间通过window窗口关系形成父子页面关系,跨域情况下父子页面间彼此看不见对方的DOM和js对象,无法直接进行数据交互。本方案从父页面到子页面数据传递采用url...
本文给大家介绍window.name实现的跨域数据传输,自己亲自实践了一下,真的非常好用,特此分享到脚本之家网站供大家参考
后来 Kris Zyp 在此方法的基础上强化了 window.name 传输 ,并引入到了 Dojo (dojox.io.windowName),用来解决跨域数据传输问题。window.name 传输技术的基本原理和步骤为: name 在浏览器环境中是一个全局/window...
原文:http://research.microsoft.com/~helenw/papers/subspace.pdfwindow.name 传输技术,原本是 Thomas Frank 用于解决 cookie 的一些劣势(每个域名 4 x 20 Kb 的限制、数据只能是字符串、设置和获取 cookie 语法...
三、使用window.name来进行跨域 window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name...
nameStoragenameStorage 是类似 sessionStroage 的键值对数据存储工具,但是可以跨域。nameStorage 适用于同一窗口内跨页面数据存储与传递。技术上,nameStorage 使用 window.name 存储数据。数据的生存周期为窗口...
主要介绍了PHP下ajax跨域的解决方案之window.name,结合实例形式分析PHP ajax跨域的解决方案window.name基本原理、操作技巧与相关注意事项,需要的朋友可以参考下
nameStorage 是类似 sessionStroage 的键值对数据存储工具,但是可以跨域。 nameStorage 适用于同一窗口内跨页面数据存储与传递。 技术上,nameStorage 使用 window.name 存储数据。 数据的生存周期为窗口会话的生存...
分享转载:前端常见跨域解决方案 1、 通过jsonp跨域 ...4、 window.name + iframe跨域 5、 postMessage跨域 6、 跨域资源共享(CORS) 7、 nginx代理跨域 8、 nodejs中间件代理跨域 9、 WebSocket协议跨域
JavaScript由于同源策略的限制,跨域通信一直是棘手的问题。... window.name 保存数据以及跨域 iframe 静态代理动态传输方案,充分的运用了window.name因为页面的url改变而name不改变的特性。 各种方案
框架完美解决了iframe之间的跨域通讯。底层技术采用window.name转换代理实现
跨域demo集一个关于跨域的简单demo集合,适合入门学习跨域的。任何对初学者学习跨域有用的PR都会接受,谢谢!原理用node的web框架express在3000端口和3001端口分别开启一个静态服务器,在两个端口间进行跨域传输数据...
<asp:ScriptReference Name="MicrosoftAjax.js" ScriptMode="auto" Path="~/ScriptLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.js" /> 2、修改MicrosoftAjax.debug.js 删除 switch(Sys.Browser...
解决方式: 一、window.name 1、 服务器返回 代码如下: [removed]window.name='{“id”:”3″, “name”:”leisure”}’;[removed] 2、定义一个iframe,添加onload事件 <iframe id=”iframe1″ onload=”iLoad”...