如何使用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,使用“掃一掃”付款,付款碼見下圖,別忘了付款留言哦!


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM