Skip to content

前端跨域:2domain+iframe

这种跨域的方式最主要的是要求主域名相同。什么是主域名相同呢?

  • www.fridolph.wang
  • blog.fridolph.wang
  • resume.fridolph.wang

这三个主域名都是 fridolph.wang , 而主域名不同的就不能用此方法。

假设目前a.nealyang.cn 和 b.nealyang.cn 分别对应指向不同ip的服务器。

a.nealyang.cn 下有一个test.html文件

html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>html</title>
  <script type="text/javascript" src = "jquery-1.12.1.js"></script>
</head>
<body>
  <div>A页面</div>
  <iframe
  style = "display : none"
  name = "iframe1"
  id = "iframe"
  src="http://b.nealyang.cn/1.html" frameborder="0"></iframe>
  <script type="text/javascript">
      $(function(){
          try{
              document.domain = "fridolph.wang"
          }catch(e){
            
          }
          $("#iframe").load(function(){
              var jq = document.getElementById('iframe').contentWindow.$
              jq.get("http://nealyang.cn/test.json",function(data){
                  console.log(data);
              });
          })
      })
  </script>
</body>
</html>

利用 iframe 加载 其他域下的文件(nealyang.cn/1.html), 同时 document.domain 设置成 nealyang.cn ,当 iframe 加载完毕后就可以获取 nealyang.cn 域下的全局对象, 此时尝试着去请求 nealyang.cn 域名下的 test.json (此时可以请求接口),就会发现数据请求失败了~~ 惊不惊喜,意不意外!!!!!!!

共 20 个模块,1301 篇 Markdown 文档。