跨域总结

跨域总结

最近遇到线上接口,本地访问的跨域问题,总结如下:

几种方法

  • jsonp、动态创建script : 需要后台配合。 后台回传的数据,需要用callback函数包装。否则不能使用此方法实现跨域。
  • H5的postMessage方法:需要后台配合。
  • cors方法:后台设置配置 允许接入的域,就可以了
    Access-Control-Allow-Origin:*
  • yahoo线上jsonp代理:不需要后台配合
    详细见:http://www.w3dev.cn/article/20130228/JSONP-crossdomain-online-httpproxy-api.aspx
  • 服务端做代理: 例如使用ngnix。 如果是非jsonp接口用这个吧。
  • iFrame 需要嵌入的页面做配合

yahoo线上jsonp代理*

作者:破 狼 出处:http://www.cnblogs.com/whitewolf/
yahoo提供的jsonp代理:http://query.yahooapis.com/v1/public/yql

你可以讲示例放在你网站下运行,绝对不会报错

html:
接口数据为json格式:
-[如果运行无效果,请自行将源代码保存为html文件运行]

<script type="text/javascript" src="http://www.w3dev.cn/rardownload/20130106/20130106170832648.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<script>
    $.ajax({
        url: 'http://query.yahooapis.com/v1/public/yql',
        dataType: 'jsonp',
        data: {
            q: "select * from json where url=\"http://www.w3dev.cn/json.asp\"",
            format: "json"
        },
        success: function (d) {
           alert(JSON.stringify(d))//远程json数据放在query.results下
        }
    });</script>

如果跨域数据源不是json格式的,而是html代码,可以用下面的代码获取到跨域页面的html代码,结果如下
-[如果运行无效果,请自行将源代码保存为html文件运行]

<script type="text/javascript" src="http://www.w3dev.cn/rardownload/20130106/20130106170832648.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<script>
    $.ajax({
        url: 'http://query.yahooapis.com/v1/public/yql',
        dataType: 'jsonp',
        data: {
            q: "select * from html where url=\"http://www.w3dev.cn/eg/base64.aspx\"",
            format: "xml"
        },
        success: function (d) {
           alert(JSON.stringify(d))//跨域html代码放在results下,注意和json的区别
        }
    });</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值