【9大跨域解决方案】document.domain解决跨域的原理

本文介绍了一级域名与二级域名的概念,并通过实例展示了如何利用document.domain属性实现跨域数据通信。同时,提供了九种常见的跨域解决方案,包括JSONP、CORS、postMessage等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

document.domain笔记

一级域名与二级域名

直接看例子就能明白:

显然,这是跨域的

本地设置不同域名

可以通过配置host文件来设置不同的域名

  • 一般host文件的目录为:C:\Windows\System32\drivers\etc
 127.0.0.1       www.yuhua.com
    127.0.0.1       a.yuhua.com
    127.0.0.1       b.yuhua.com

这样的配置的意思就是,当你去访问www.yuhua.coma.yuhua.com 或 b.yuhua.com的时候,会去访问对应地址前面的ip,这里,这三个域名都是会去访问127.0.0.1

如何通过document.domain实现跨域

document.domain这个方法使用极其简单,但是也有较大的限制,主要用于主域相同的域之间的数据通信。
下面简单举例说明:

显然,两者是跨域的。

  • 需求:在a上获取b的数据
  • 思路:通过document.domain为"yuhua.com"的方式获取
  • 具体实现:
 //a.html
 <iframe src="http://b.yuhua.com:4000/b.html" "load()" id="frame"></iframe>
 <script type="text/javascript">
   document.domain = 'yuhua.com';
   function load(){
    console.log(frame.contentWindow.name);
   }
 </script>

 //b.html
 <script type="text/javascript">
  document.domain = 'yuhua.com';
  var name = 'yuhua';
 </script>
  • 现象:加载a.html,会打印"yuhua"
  • 原因分析:当主域之间相互通信的时候,只要将两者的document.domain赋值为当前的主域地址,即可实现跨域通信。

实现跨域的9种方法(点击可跳转详情页面)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值