JSONProxy – 獲取跨域json資料工具

發表於2015-07-10

JSONProxy是一款很好的獲取json資料的代理網站,“Enables cross-domain requests to any JSON API”。當你苦於無法跨域獲取json資料時,不妨一試,說不定能事半功倍。

比如這位朋友,想通過ajax獲取必應的每日一圖的url(是否可以通過ajax獲取“Bing每日一圖”?)很顯然,這個ajax是跨域的,直接獲取會因為跨域報錯;服務端也肯定不會有對你本地localhost的“Access-Control-Allow-Origin”的設定,所以CORS策略也是不行的;因為是個json資料,沒有方法名包裹,所以jsonp也是不行。樓主暫時還沒接觸過其他的跨域方法,如果要我去獲取url,只能通過服務端的程式碼,服務端去獲取json資料,然後index頁面去ajax請求服務端獲取的json資料(此時index頁面和服務端同源),程式碼量增加,而要做的僅僅只是獲取一個json資料啊!這時JSONProxy就幫你做好了服務端的工作,是不是很爽!

Easy: JSONP

原生的JavaScript:

myCallback函式裡的data就是返回的json資料了。很顯然,伺服器會幫你去請求你需要的json資料,然後包裹在你設定的回撥函式名中,這時要注意的程式碼中的紅色兩處要保持一致,url後跟的就是需要的json資料地址。

當然JQuery封裝好的方法更加簡單:

Easier: Cross-domain AJAX (CORS)

比jsonp更簡單的方法是CORS(好吧,也沒簡單到哪去啊…)

這回是真正地傳送了ajax請求了,為什麼跨域了還能請求?因為服務端設定好了。

而請求的json資料也是服務端幫你獲取的。也就是說,客戶端傳送請求,服務端解析請求的url,然後伺服器作為代理髮送http請求去請求json資料(這時不存在客戶端跨域),再返回給客戶端作為回撥的引數。

Easiest: jQuery Plugin

最簡單的,我怎麼感覺越來越複雜了…

略…

總結,因為要用第三方的伺服器,所以既耗時又有不確定因素(比如伺服器掛了),不合適用在真正專案中,自己玩玩尚可。

相關文章