应用场景

  • 调用百度的某个API, 例如:https://openapi.baidu.com/api
  • 返回结果是:{"id":123,"name":"test"}
  • 用$.ajax直接调用的话, 会提示
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 上的各种数据服务作为数据库表来查询,并获得结果。

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

  • 具体使用方法:
  • 打开网址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

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

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


这个解决方案不好的一点就是又通过了一次yql, 等于是yql先拿到结果, 然后又到浏览器, 中转了一次, 好的一点是不用自己再去动服务器代码

友情赞助

如果您喜欢此文,感觉对您工作有帮助,预期领导会给您涨工资,不妨小额赞助一下,让我有动力继续努力。

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


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

转载于:https://www.cnblogs.com/zhouyalei/p/6379477.html

如何使用yql实现跨域访问相关推荐

  1. 介绍一个JSONP 跨域访问代理API-yahooapis

    你是否遇到了想利用AJAX访问一些公网API,但是你又不想建立自己的代理服务,因为有时我根本就没打算涉及服务端任何代码,但是讨厌的浏览器的同源策略,阻止了我们的ajax调用. 比如我想访问一个天气的r ...

  2. Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法

    当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx ...

  3. [Unity WWW] 跨域访问解决方法

    什么是跨域访问 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接在域与域之间的桥梁.当一个域与其他域建立了信任 ...

  4. AJAX跨域访问解决方案

    Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...

  5. php跨域访问java,案例:PHP Ajax 跨域最佳解决方案

    本文通过设置Access-Control-Allow-Origin来实现跨域. 例如:客户端的域名是edu.jb51.net,而请求的域名是edu.jb51.net. 如果直接使用ajax访问,会有以 ...

  6. 通过document.domain实现跨域访问

    通过document.domain实现跨域访问:https://blog.csdn.net/nlznlz/article/details/79506655 前端跨域方法之document.domain ...

  7. java 视频切片_关于视频播放、视频切片、跨域访问视频

    关于视频播放.视频切片.跨域访问视频 前言 最近在着手部署上线做的一个视频网站,当我们部署到云服务器上后并开始测试视频观看并发量,发现了一个很严重的问题:带宽不足.9 或 10 个人同时观看视频的时候 ...

  8. Flash完美跨域访问的方法

    首先,你要确定以下几点,否则可能无法实现: 1.你要跨到哪个域,你必须能管理那域上文件,因为这里要放一个通行文件. 2.你的Flash如果只有SWF,那不一定能实现,因为有时,Flash的AS中,要加 ...

  9. js跨域访问,No 'Access-Control-Allow-Origin' header is present on the requested resource

    js跨域访问提示错误:XMLHttpRequest cannot load http://...... No 'Access-Control-Allow-Origin' header is prese ...

最新文章

  1. 前后端分离的接口规范是什么?
  2. SOAP 及其安全控制--转载
  3. 设计模式-行为-职责链
  4. Hadoop命令查看可以访问的queue
  5. markdown mysql高亮_修改博客园markdown编辑器代码高亮风格的方法
  6. cordova 插件开发
  7. 新唐c语言怎么计算指数运算,C语言位域精解
  8. 【2018.3.10】模拟赛之二-ssl2575 给出字符串【字符串】
  9. wordpress开放注册_WordPress.com开源,欧洲开放数据门户网站以及更多新闻
  10. linux保存python文件_告诉Python将.txt文件保存到Linux上的某个目录 - python
  11. HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  12. 线性最优离散滤波器——维纳滤波器及LCMV MVDR GSC (自适应滤波)
  13. VMWare安装Deepin系统
  14. 大咖联袂发布 《慧技术·惠金融——2022金融科技趋势研究报告》开放下载
  15. 写一个京东最顶部的导航条
  16. 【NAT网络地址转换(私网公网地址、静态NAT、动态NAT、NAPT、Easy IP、NAT Server)】-20211215、20211216
  17. 中国的美女为什么这样少的原因
  18. 宝塔php漏洞,宝塔面板 phpmyadmin 未授权访问漏洞 BUG ip:888/pma的问题分析
  19. 小米手环NFC 模拟门禁卡 不买东西最简解决方案(100字)
  20. 【Leetcode-算法】844. 比较含退格的字符串(C++)

热门文章

  1. Word中如何设置表格的边框线样式和颜色
  2. opencv两张图片上下简单拼接
  3. 1000个jquery插件
  4. [转帖]一直想整理下游戏中FOV的设置,结果发现网上已经有人整理过了转过来大家看~ 《FPS游戏的摄像机视场(FOV)为何选择65度75度90度?》...
  5. 感谢赵杰(jackhope)umi v4加密狗驱动对我很有用
  6. 命令行清空垃圾回收箱
  7. 说菜,(¬︿̫̿¬☆)
  8. 今夜明珠色,当随满月开。
  9. Keil编译后生成信息详解
  10. 高德地图推出酒店比价,为爱牵线后能为盈利搭桥吗?