[转]JS跨域解决方式 window.name

本文转自:http://www.cnblogs.com/lichuntian/p/4909465.html

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 属性。

 

使用案例:

在网页切换的时window对象为无见面让销毁。

<script> alert((window.name==""?"是":"不是")+"第一次开这个窗口!") window.name="blueidea"; </script>

当网页载入的时候,给window.name设置一个即兴的值,刷新后,可以视window.name的价值已经安装了,就好断定有页面就是刷新了的了。如果无装,显然页面是首先糟糕载入。

判断页面是否第一蹩脚加载

如此可用来叫网站建设进程被,提交页面后我们常常要为此到window.history.go(-1)返回上一样页,因为页面的缓存功能,我们只好回到上次操作的页面,但于剔除等操作中,我们想实时看到去项目后底页面,这就要使同时刷新技术,下面我们总总结一下常用的几乎种植window.history.go(-1)返回页面后实时刷新技术。

回到上一致页代码:

<a href=”Javascript:window.history.go(-1)”>返回上一页</a>   

1.劫持载入后刷新一涂鸦

咱得学C++中化解头文件还包含的法,在C++中使#ifndef A
#define A #endif来化解头文件的重新包含问题一样我们利用如下方式

<script> if(window.name != “bencalie”){     location.reload();    
window.name = “bencalie”; } else{     window.name = “”; }
</script>

开展载入后劫持刷新一软,相信如果你有编程经验一定看之敞亮的,这里不举行解释!

2.禁止缓存,重新载入一赖

当前一页头部加上

<meta http-equiv=”Expires” CONTENT=”0″> <meta
http-equiv=”Cache-Control” CONTENT=”no-cache”> <meta
http-equiv=”Pragma” CONTENT=”no-cache”>

或者

<%    Response.Buffer=True       Response.ExpiresAbsolute=Now()-1  
   Response.Expires=0       Response.CacheControl=”no-cache” %>
都可以兑现刷新。