ajax跨域和js跨域解决方案

  1. <FONT face=""">ajax跨域和JS的跨域通信(Cross The Site)的几种解决方案

     

     

    1.什么引起了ajax跨域不能的问题

    ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。

    2.有什么完美的解决方案么?

    没有。解决方案有不少,但是只能是根据自己的实际情况来选择。

    具体情况有:

    一、本域和子域的相互访问: www.aa.com和book.aa.com

    二、本域和其他域的相互访问: www.aa.comwww.bb.com 用 iframe

    三、本域和其他域的相互访问: www.aa.comwww.bb.com 用 XMLHttpRequest访问代理

    四、本域和其他域的相互访问: www.aa.comwww.bb.com 用 JS创建动态脚本

     

    解决方法:

     

  2. 在同一域的服务器端建立一个代理,浏览器向该代理网址发送请求,然后该代理向其他域的网址发请求,在获取回复后,或作处理或按原样发回到浏览器

     

  3. 使用按需(On-Demand) Javascript 脚本。在页面内动态生成新的<script>,将其src属性指向别的网站的网址,这个网址返回的内容必须是合法的Javascript脚本,常用的是JSON消息。

     

  4. 使用IFRAME。在页面内嵌或动态生成指向别的网站的IFRAME,然后这2个网页间可以通过改变对方的anchor hash fragment来传输消息。改变一个网页的anchor hash fragment并不会使浏览器重新装载网页,所以一个网页的状态得以保持,而网页本身则可以通过一个计时器(timer)来察觉自己anchor hash的变化,从而相应改变自己的状态

     

    示例:

     

    <HTML>

    <HEAD>

     

    <script LANGUAGE="Javascript">

     

    <!--

    function get()

         {

             var obj = document.getElementById("get");

             var s=document.createElement('SCRIPT');

             s.id="get";

             s.src='http://www.zzb.bupt.cn/test.html';

             document.body.replaceChild(s,obj);

             setTimeout('alert(result.name)',1000);

            

            

            

         }

     

     //-->

     </script>

    </HEAD>

     <BODY>

     <INPUT TYPE="button" value="CLICK ME" οnclick="get()"/>

    <script id="get">

    </script>

     </BODY>

     </HTML>

     

    http://www.zzb.bupt.cn/test.html的内容

     

    var result={name:'yangyun',number:12};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值