建站专提News

window.name解决跨域数据传输问题

一佰互联网站开发设计(www.yinxi.net) 发布日期 2019-04-22 10:10:31 浏览数: 63


原文:http://research.microsoft.com/~helenw/papers/subspace.pdf
window.name 传输技术,原本是 Thomas Frank 用于解决 cookie 的一些劣势(每个域名 4 x 20 Kb 的限制、数据只能是字符串、设置和获取 cookie 语法的复杂等等)而发明的(详细见原文:《Session variables without cookies》),后来 Kris Zyp 在此方法的基础上强化了 window.name 传输 ,并引入到了 Dojo (dojox.io.windowName),用来解决跨域数据传输问题。
window.name 的美妙之处:name 值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2MB)。
window.name 传输技术的基本原理和步骤为:
name 在浏览器环境中是一个全局/window对象的属性,且当在 frame 中加载新页面时,name 的属性值依旧保持不变。通过在 iframe 中加载一个资源,该目标页面将设置 frame 的 name 属性。此 name 属性值可被获取到,以访问 Web 服务发送的信息。但 name 属性仅对相同域名的 frame 可访问。这意味着为了访问 name 属性,当远程 Web 服务页面被加载后,必须导航 frame 回到原始域。同源策略依旧防止其他 frame 访问 name 属性。一旦 name 属性获得,销毁 frame 。
在最顶层,name 属性是不安全的,对于所有后续页面,设置在 name 属性中的任何信息都是可获得的。然而 windowName 模块总是在一个 iframe 中加载资源,并且一旦获取到数据,或者当你在最顶层浏览了一个新页面,这个 iframe 将被销毁,所以其他页面永远访问不到 window.name 属性。
基本实现代码,基于 YUI,源自 克军写的样例:

(function(){
var YUD = YAHOO.util.Dom, YUE = YAHOO.util.Event;
dataRequest = {
_doc: document,
cfg: {
proxyUrl: "proxy.html"
}
};
dataRequest.send = function(sUrl, fnCallBack){
if(!sUrl || typeof sUrl !== "string"){
return;
}
sUrl = (sUrl.indexOf("?") > 0 ? "&" : "?") "windowname=true";
var frame = this._doc.createElement("iframe"), state = 0, self = this;
this._doc.body.appendChild(frame);
frame.style.display = "none";
var clear = function(){
try{
frame.contentWindow.document.write("");
frame.contentWindow.close();
self._doc.body.removeChild(frame);
}catch(e){}
};
var getData = function(){
try{
var da = frame.contentWindow.name;
}catch(e){}
clear();
if(fnCallBack && typeof fnCallBack === "function"){
fnCallBack(da);
}
};
YUE.on(frame, "load", function(){
if(state === 1){
getData();
} else if(state === 0){
state = 1;
frame.contentWindow.location = self.cfg.proxyUrl;
}
});
frame.src = sUrl;
};
})();
一佰互联是全国知名建站品牌服务商,我们有九年网站建设、网站制作、网页设计、php开发和域名注册及虚拟主机服务经验,提供的自助建站服务更是全国有名。近年来还整合团队优势自主开发了可视化多用户”巅云建站系统“3.0平台版,拖拽排版网站制作设计,轻松实现pc站、手机微网站、小程序、APP一体化全网营销网站建设 ,已成功的为全国上百家网络公司提供自助建站平台搭建服务。

相关新闻more

15
04月
重庆做网站_网站进行改版时应该注意哪些方面

重庆做网站_网站进行改版时应该注意哪些方面 在互联网时代的今天,网站改版十分频繁。也或许是因为规则的不断改变。不论原因是什么,恰当的改版是相... >>详情

30
03月
邮件营销的7个秘诀

简介:最近很多人说邮件营销已经不行了,都去干微信营销了,我看未必。除了QQ在线或离线发送之外,邮件目前依然是上网收发文件资料的首选。邮件营销... >>详情

25
04月
PHP解析url并得到url参数方法总结

PHP 中解析 url 并得到 url 参数这里介绍两种对url操作的方法:1、拿到一个完整url后,如何解析该url得到里面的参数。/**... >>详情

12
04月
网站建设:网站优化成为企业网站的必备

网站建设优化就是其间的一种互联网术语,真实质上就是在懂得了搜刮引擎及天然排名的根基之上,对网站中止从里到外的调剂和优化,改善网站在搜刮中的排... >>详情

高端网站建设

美工兼顾SEO,为企业电子商务营销助力!

电话:

023-85725751

产品

域名注册 虚拟主机 云服务器 企业邮局
智能建站 APP打包 微站/小程序 创业平台
网站推广 媒体营销 智能采集 AI机器人
400电话 短信营销 店销机器人
私人定制 门户网站