跨域请求

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。
如下:在这里插入图片描述常规操作获取不同的域的数据:

 var get1 = function() {$.ajax({ 
        url: 'http://api.jisuapi.com/weather/query?appkey=21f4782df8c57e19&city=深圳', 
        type: 'get',
        success: function(data) { 
            console.log(data);
        }
    })
    } 
    get1(); //失败 出现跨域提示

在这里插入图片描述在这里插入图片描述
跨域解决方案:
一:jsonp

$('button').click(function () {
        $.ajax({
            url:"http://www.jxntv.cn/data/jmd-jxtv2.html",
            dataType:'jsonp',
        })
    })
    function list(data) {
        console.log(data)
    }
    //成功

在这里插入图片描述
二.post

 $('button').click(function() {
        $.post({
            url: 'http://www.jxntv.cn/data/jmd-jxtv2.html',
            dataType: 'jsonp',  // 请求方式为jsonp
            jsonpCallback: "onBack",    // 自定义回调函数名
            data: {}
        });
    })
    function list(data){
        console.log(data)
    }
    //成功

在这里插入图片描述
jsonp虽然很简单,但是有如下缺点:

(1)安全问题(请求代码中可能存在安全隐患)

(2)要确定jsonp请求是否失败并不容易

跨域有以下解决办法:
1、 通过jsonp跨域
2、 document.domain + iframe跨域
3、 location.hash + iframe
4、 window.name + iframe跨域
5、 postMessage跨域
6、 跨域资源共享(CORS)
7、 nginx代理跨域
8、 nodejs中间件代理跨域
9、 WebSocket协议跨域
来源http://blog.csdn.net/joyhen/article/details/21631833

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值