我开始在我的应用程序中实现跨域API,直到现在它才变得非常流畅。我已经访问了很多API而没有远程了解CORS或JSONP的存在。在当前项目中尝试使用维基百科的API时,我突然收到Cross-Origin Request Blocked
错误。我现在已经读了大约一个小时了,这很有道理。我唯一的问题是,如果需要CORS和JSONP来解决这个限制,为什么我一直在没有它们的情况下访问API?在这种情况下导致它失败的原因是什么?它是不是在引擎盖下,我没有看到它?我使用了谷歌地图API的回调,但没有意识到真正的原因。以下是我尝试使用常规JSON进行的简单API请求。
var url = "https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&titles=";
$scope.submit = function() {
$scope.viewing = "results";
$scope.loading = true;
var reqUrl = url+encodeURIComponent($scope.query);
$.getJSON(reqUrl, function(data) {
console.log(data);
});
}
控制台错误:
阻止跨源请求:同源策略禁止在https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&callback=?&titles=hi读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。