如何使用yql实现跨域访问
应用场景
- 调用百度的某个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实现跨域访问相关推荐
- 介绍一个JSONP 跨域访问代理API-yahooapis
你是否遇到了想利用AJAX访问一些公网API,但是你又不想建立自己的代理服务,因为有时我根本就没打算涉及服务端任何代码,但是讨厌的浏览器的同源策略,阻止了我们的ajax调用. 比如我想访问一个天气的r ...
- Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法
当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx ...
- [Unity WWW] 跨域访问解决方法
什么是跨域访问 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接在域与域之间的桥梁.当一个域与其他域建立了信任 ...
- AJAX跨域访问解决方案
Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...
- php跨域访问java,案例:PHP Ajax 跨域最佳解决方案
本文通过设置Access-Control-Allow-Origin来实现跨域. 例如:客户端的域名是edu.jb51.net,而请求的域名是edu.jb51.net. 如果直接使用ajax访问,会有以 ...
- 通过document.domain实现跨域访问
通过document.domain实现跨域访问:https://blog.csdn.net/nlznlz/article/details/79506655 前端跨域方法之document.domain ...
- java 视频切片_关于视频播放、视频切片、跨域访问视频
关于视频播放.视频切片.跨域访问视频 前言 最近在着手部署上线做的一个视频网站,当我们部署到云服务器上后并开始测试视频观看并发量,发现了一个很严重的问题:带宽不足.9 或 10 个人同时观看视频的时候 ...
- Flash完美跨域访问的方法
首先,你要确定以下几点,否则可能无法实现: 1.你要跨到哪个域,你必须能管理那域上文件,因为这里要放一个通行文件. 2.你的Flash如果只有SWF,那不一定能实现,因为有时,Flash的AS中,要加 ...
- 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 ...
最新文章
- 前后端分离的接口规范是什么?
- SOAP 及其安全控制--转载
- 设计模式-行为-职责链
- Hadoop命令查看可以访问的queue
- markdown mysql高亮_修改博客园markdown编辑器代码高亮风格的方法
- cordova 插件开发
- 新唐c语言怎么计算指数运算,C语言位域精解
- 【2018.3.10】模拟赛之二-ssl2575 给出字符串【字符串】
- wordpress开放注册_WordPress.com开源,欧洲开放数据门户网站以及更多新闻
- linux保存python文件_告诉Python将.txt文件保存到Linux上的某个目录 - python
- HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 线性最优离散滤波器——维纳滤波器及LCMV MVDR GSC (自适应滤波)
- VMWare安装Deepin系统
- 大咖联袂发布 《慧技术·惠金融——2022金融科技趋势研究报告》开放下载
- 写一个京东最顶部的导航条
- 【NAT网络地址转换(私网公网地址、静态NAT、动态NAT、NAPT、Easy IP、NAT Server)】-20211215、20211216
- 中国的美女为什么这样少的原因
- 宝塔php漏洞,宝塔面板 phpmyadmin 未授权访问漏洞 BUG ip:888/pma的问题分析
- 小米手环NFC 模拟门禁卡 不买东西最简解决方案(100字)
- 【Leetcode-算法】844. 比较含退格的字符串(C++)