2015-09-25 54 views
0

我只是潛入JSON,發現從data.gov以下以.json文件:http://data.consumerfinance.gov/api/views.jsonJSONP沒有?jsoncallback =?

爲什麼不讓我需要?jsoncallback=?檢索數據?

(function() { 
    $.getJSON('http://data.consumerfinance.gov/api/views.json', function (data) { 
     console.log(data); 
    }); 
})(); 

發佈的代碼有效。是因爲我使用匿名回調函數嗎? 我可以從任何服務器檢索任何.json文件,或者(我需要)API嗎?

+0

jsonp請求需要回調....正常json不是 – Vanojx1

+0

一些公共API允許調用,而不需要回調。其他由於各種原因沒有。 –

回答

1

該代碼將嘗試使用XMLHttpRequest來獲取數據。

默認情況下,the Same Origin Policy將阻止網頁中的JavaScript跨域讀取數據。

JSONP是一種解決同源策略的攻擊(它依賴於以JavaScript程序的形式表示的數據)。

CORS是作爲一種標準開發的,也是一種更細緻的方法,允許訪問跨源資源。

data.consumerfinance.gov實現CORS。

這涉及到添加額外的HTTP響應標頭,它給予瀏覽器的明確許可,以便它在其他網站上與JavaScript共享數據。

1

該服務器在響應中發送Access-Control-Allow-Origin: *,該響應告訴瀏覽器忽略同源策略。

因此,你可以做一個正常的AJAX請求,而不需要JSONP。