我知道这个错误以前已经在这个网站上发布过,我已经能够解决这个错误,但我正在寻找一些关于我实际做了什么的解释。
因此,作为一个学习项目,我正在创建一个Wikipedia Viewer,我尝试做的第一件事是调用Wikipedia API:
$(document).ready(function() {
var wiki = "https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json"
$.getJSON(wiki, function(d) {
console.log(d);
});
});
这将返回错误XMLHttpRequest cannot load https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://conn3cted.uk.tn' is therefore not allowed access.
我能够通过在GET请求(https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json&callback=?
)的末尾添加&callback=?
来阻止这个错误的出现。
但是我不完全理解callback=?
在做什么,怎样才能阻止它出错呢?
编辑:这与链接的问题不同,因为我不是在问JSONP (我不这么认为?)这个问题是关于使用<script>
标签的,而我问的是为什么添加callback=?
会这样做。
发布于 2016-05-05 19:42:56
将callback=?
粘贴在URL的末尾会导致jQuery生成<script>
元素并发出JSONP请求,而不是使用XMLHttpRequest。
对this question的回答解释了JSONP如何绕过同源策略。
https://stackoverflow.com/questions/37027750
复制相似问题