跨域学习 - window.name

利用window.name实现跨域。

window.name[quote]一个字符串,存放了窗口的名称。这个名称是在open()方法创建窗口时指定的或者使用一个<frame>标记的name属性制定的。窗口的名称可以用作一个<a>或者<form>的target属性的值,以这种方式使用target属性声明了超链接文档或表单提交结果应该显示于指定的窗口或帧中。[/quote]

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>';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值