• 如何使用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 上的各种数据服务作为数据库表来查询,并获得结果。

    通过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,使用“扫一扫”付款,付款码见下图,别忘了付款留言哦!


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

  • 相关阅读:
    JS 数组去重复值
    git 上传项目 到github
    IntelliJ IDEA 创建maven 项目 并且,将springMVC 与Mybatis 整合
    easyui datagrid 动态添加columns属性
    codeMirror的简单使用,js比较文本差异(标注出增删改)
    sql注入
    Web For Pentester靶场
    一些数据库
    nginx的使用场景
    dockerfile
  • 原文地址:https://www.cnblogs.com/zhouyalei/p/6379477.html
Copyright © 2020-2023  润新知