JSONP 没有 ?jsoncallback=?

JSONP without ?jsoncallback=?

我刚刚进入 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?

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

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

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

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

JSONP 是一种绕过同源策略的 hack(它取决于以 JavaScript 程序形式表达的数据)。

CORS 被开发为一种标准的、更细微的方法,以允许访问 cross-origin 资源。

data.consumerfinance.gov 实施 CORS。

这涉及添加额外的 HTTP 响应 headers,明确允许浏览器与其他网站上的 JavaScript 共享数据。