我知道此错误之前已发布在该网站上,并且我已经能够解决该错误,但我正在寻找有关我实际所做的事情的一些解释。
作为一个学习项目,我正在创建一个维基百科查看器,我尝试做的第一件事就是调用维基百科 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.
我可以通过添加 &callback=?
来阻止此错误的出现。到 GET 请求的末尾 ( https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json&callback=?
)
但我不完全明白什么是callback=?
正在做什么,这会阻止它出错?
编辑:这与链接的问题不同,因为我没有询问 JSONP(我不认为?),并且问题集中在使用 <script>
上。标签,而我问为什么添加 callback=?
做了这个工作。
最佳答案
粘callback=?
URL 末尾会导致 jQuery 生成 <script>
元素并发出 JSONP 请求,而不是使用 XMLHttpRequest。
对 this question 的答复解释 JSONP 如何绕过同源策略。
关于javascript - 维基百科 API XMLHttpRequest 无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37027750/