JSONP没有?jsoncallback =?

时间:2015-09-25 14:07:06

标签: javascript jquery json jsonp

我刚刚进入JSON并从data.gov找到以下.json文件:http://data.consumerfinance.gov/api/views.json

为什么我不需要?jsoncallback=?来检索数据?

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

发布的代码有效。是因为我使用匿名回调函数吗? 我可以从任何服务器检索任何.json文件,或者(我的)需要API吗?

2 个答案:

答案 0 :(得分:1)

该服务器在响应中发送Access-Control-Allow-Origin: *,告诉您的浏览器忽略同源策略。

因此,您可以执行正常的AJAX请求,而无需JSONP。

答案 1 :(得分:1)

该代码将尝试使用XMLHttpRequest来获取数据。

默认情况下,the Same Origin Policy会阻止网页中的JavaScript跨域读取数据。

JSONP是一个解决同源策略的黑客(它取决于以JavaScript程序形式表达的数据)。

CORS是一种标准的,更加细致的方法,可以访问跨源资源。

data.consumerfinance.gov实现了CORS。

这涉及添加额外的HTTP响应标头,该标头为浏览器提供明确的权限,以便它与其他网站上的JavaScript共享数据。