javascript跨域问题


javascripts的跨域问题是在开发中经常遇到的问题。


1. jsonp的跨域

    原理是:

            首先在当前页面定义好callback函数,

            接着动态创建script标签,src是跨域传输的链接地址,

            后台回调例如callback('success')的字符串。当前页面就会马上这行。

   局限:只能使用get的方式,对于使用post方式跨域传输是无效的


2. form + iframe 实现跨越

    原理是:

            首先在当前页面定义好callback函数,

            在页面中iframe高度为0(用户不可见),

            form的target指向这个iframe,

            后台返回的js代码,来触发callback方法

     优势:如果get的方式的话,一般用jsonp就能处理,如果是要post的方式的话,就只能用这个。

    这是当前页面 ==================test.html================================

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <script src="jquery-1.10.2.js"></script>

        <script src='http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=3196502474' charset="utf-8"></script>
    </head>
    <body>
        <script>
            function callback(data){
                console.log(data.errCode);
            }
        </script>

        <iframe src="" frameborder="0" id="if"></iframe>

        <form action="test.php" target="if" id='f'>
            <input type="file">
        </form>

        <button valu="click" id="btn"></button>
        
        <script>
            $('#btn').click(function(event) {
                $('#f').submit();
            });
        </script>
    </body>
</html>
      这是跨域页面 ==================test.php===============================

<?php

?>

<script>
    window.parent.callback({
        errCode:1,
        data:{

        }
    });
</script>



问题:返回的callback如果指定作用于呢?如上面的例子,必须是window.parent.callback,这样的话,我的callback函数一定要定义在全局才可以执行,会污染全局环境了?



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值