南京北大青鸟

全国咨询电话:15195455103

三分钟了解北大青鸟
当前位置:南京北大青鸟 > 学习园地 > 编程技巧

Javascript 跨域

来源:南京北大青鸟张府园校区      作者:IT教育      发布时间:2012-11-26 16:55:43

跨域:协议、域名、端口 任何一项不同即为跨域。

跨域:协议、域名、端口 任何一项不同即为跨域。

1、jsonp 不受跨域限制。

2、域名不同,但主域名相同的窗口,可以修改 document.domain = "主域名" 来实现同源(同理,还有 cookies 的共享设置也是通过这种方法),一级 XMLHttpRequest 也可以通讯。

3、 iframe 窗口与父窗口在跨域情况下,可以互相获取 window 对象(iframeNode.contentWindow、 window.parent),但不能访问 window 对象的属性,topWindow 不能获取 iframe 中 的 iframe window 对象(因为无法获取 iframe 中的 iframeNode),反之却可以 (window.parent.parent)。

4、window.name 属性在 location.href 被修改后仍然保留,parent 中修改 iframe 的 src 为同域名后可以访问 iframe 的 window.name 。

5、iframe 窗口在跨域情况下虽然不能访问window 的属性值,却可以修改 window.location.href,修改 location.href 的锚点不会发起请求。

6、获取 window 对象(包括 iframeNode.contentWindow、window.open 创建的窗口,当然也可以蛋痛地向本窗口 postMessage )后使用 HTML5 的window.postMessage 方法, iframeNode.contentWindow.postMessage("msg"," * 或 contentWindow中的域名") ,在 iframe 中使用 window.onmessage 事件实现跨域消传送,注意,iframe 在加载完毕后,父窗口 的 onload 事件才触发,不要在 onload 事件之前( iframe 加载完毕前)就 postMessage。

7、二级 XMLHttpRequest 跨域: 服务器返回响应头 Access-Control-Allow-Origin:请求方域名,浏览器发往服务器的 origin 请求头包含了请求方域名,这是由浏览器自动发送的,并且不能修改。

8、websocket 将 http 协议升级为 ws 协议。

9、window.name 和 location.hash 存储的信息比较少,不适用单次的大数量传输,window.name 没有消息送达的提示方式,靠定时检测,IE 6/7 没有 onhashchange 事件,也靠定时检测。

10、借助 flash 和 在 server 发送的跨 域请求,这已超出 javascript 范畴,6、7、8 方法不适用于古董级浏览器,对于 window 属性能够的读取限制多发生在 比较新的浏览 器(比如 opera),一般这些浏览器都支持 postMessage,可以通过检测手段优先使用 postMessage


分享到:

相关阅读:

上一篇:Struts2国际化

下一篇:策略模式

近期文章

抢试听名额

名额仅剩66名

教育改变生活

WE CHANGE LIVES