js小知识点:关于跨域问题

  • 只要协议、域名、端口有任何一个不同,都会被当成不同的域
  • js跨域是指:通过js在不同的域之间进行数据传输或通信

解决方法:

  • 通过jsonp:在页面上引入不同域的js脚本文件。

 实现方法:通过script标签引入一个js文件,如:<script src="http://网址?callback=函数名"></script>这样这个文件载入成功后悔执行我们在url参数中指定的函数,并把json数据作为参数传入。函数题中写数据的处理方法。例如

<script>

function 函数名(jsondata){

处理方法

}

</script>

  • 通过修改document.domain来跨子域

方法:把两个跨域的页面的doucument.domain设置成相同的域名;

注意:只能设置为自身或更高一级的父域,且主域必须相同;例如:同时在两个页面里面书写

<script>

document.domain='网址';

</script>

  • 通过window.name来进行跨域

方法(原页面a,目标页面b):

  • 给b页面的window.name设置window.name为a页面想要得到的数据;
  • 在a页面使用一个隐藏的iframe来充当中间角色去获取数据,a去获取iframe的数据
  • 把iframe的scr设为b的地址
  • 获取后,把iframe的src设置为与a页面同源的;

 

  • 使用html5中window.postMessage来跨域

方法:

  • 在发送消息的页面使用postMessage函数,第一个参数为要发送的消息,类型只能是字符串,第二个参数为targetOrigin用来限定接收消息的那个window对象所在的域,如果不想限定域,可以使用通配符 *  。
  • 接受消息的页面通过自身的onmessage函数来监听,消息内容储存在该事件对象的data属性中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值