如何使用yql实现跨域访问

应用场景

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
  • 若是返回结果是var obj={"id":123,"name":"test"}; 只须要jsonp就能解决这问题, 但接口是不可能变的,

这种状况下, 如何解决这类问题

雅虎的Yahoo Query Language (YQL)经过它能够把 Web 上的各类数据服务做为数据库表来查询,并得到结果。html

经过yql服务, 能够把https://openapi.baidu.com/api的内容再次封装, 还能够把接口返回的内容, 再次使用sql语句查询, 而后再经过yql服务返回最终结果ajax

  • 具体使用方法:
  • 打开网址https://developer.yahoo.com/yql/
  • 找到示例, 把默认的示例替换成你本身的: select * from html where url='你要访问的api地址'
  • 而后点击Test, 就能看到Response里面已经有查询结果了
  • 还能够定制查询select id,name from html where url='你要访问的api地址', 定制返回结果
  • 最后复制Endpoint里面的连接大概是这样https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20urlles.org%2Falltableswithkeys
  • 最后, 把获得的连接地址复制到本身的js里面去执行就能正确拿到json

sql

$.getJSON("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20urlles.org%2Falltableswithkeys", function (data) {
    console.log(data);
});

 

到这就结束了, 已经能在控制台输出结果了数据库


这个解决方案很差的一点就是又经过了一次yql, 等因而yql先拿到结果, 而后又到浏览器, 中转了一次, 好的一点是不用本身再去动服务器代码json

 

 

 

友情赞助api

若是您喜欢此文,感受对您工做有帮助,预期领导会给您涨工资,不妨小额赞助一下,让我有动力继续努力。浏览器

赞助方式:打开支付宝App,使用“扫一扫”付款,付款码见下图,别忘了付款留言哦!服务器


或使用微信, 不用加好友就能付款
微信

相关文章
相关标签/搜索