js跨域的几种方式:

js跨域的几种方式:

(1)iframe标签+document.domain
此方法针对对于主域相同而子域不同的例子
页面a.html要访问b.html
a.html:
a.html
b.html:
这里写图片描述

(2)jsonp(JSONP只能实现GET请求)

所有的浏览器都遵守同源策略(JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。),这使得直接通过URL请求外部的资源会禁止,但是<\scipt>标签没有跨域限制。jsonp的跨域就是钻了这一漏洞,实现的跨域。
这里写图片描述
jQuery ajax的实现形式
jquery对jsonp进行了封装,没有写localHandler1函数这个回调函数,是因为jquery在处理jsonp类型的ajax时会自动生成回调函数并把数据取出来提供给success方法来调用。
这里写图片描述
(3)window.name跨域
假设app.html页面请求远程的服务器数据。我们在app.html页面新建一个iframe标签,服务器文件data.html里设置好window.name的值,然后在app.html读取window.name的值,先通过localhost:8080/web/data.html把数据读出来,再修改src的值。window.name 的值在不同的页面(甚至不同域名)加载后依旧存在(如果没修改则值不会变化),并且可以支持非常长的 name 值(2MB)。
这里写图片描述
参考(http://www.cnblogs.com/zichi/p/4620656.html
(4)postMessage()方法
postMessage方法是html5的方法,postMessage(message,targetOrigin)接收两个参数,message是即将要发送到目标窗口的字符串或者说对象,targetOrigin是接收窗口的url。
(window<->window)
a2.html
这里写图片描述
(window<->iframe)
a.html
这里写图片描述
(5)cors跨域

(6)flash跨域

(7)frame+location.hash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值