此API请求除了状态代码' 0'之外不会获得任何其他请求。而我无法弄清楚它有什么问题。浏览器上的console.log读取 "预检的响应无效(重定向)" ,但如果我只是将网站网址添加到浏览器中我可以访问它。我提出要求的方式一定有问题,但我无法弄清楚。这是代码。
var authKey = "http://en.wikipedia.org/w/api.php?action=centralauthtoken&format=json";
var xhr = new XMLHttpRequest();
xhr.open("GET", authKey, true);
xhr.setRequestHeader('Api-User-Agent', 'http://s.codepen.io');
xhr.send();
var xmlDocument = xhr.response;
console.log(xhr.status);
console.log(xhr.statusText);

我也改变了http'到' https'但我仍然得到' 0' 0只有这次你在控制台上看到 "对预检请求的响应没有通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://s.codepen.io'因此不允许访问。"
我不确定它的语法,我构建请求的方式,或者在stackoverflow和google上尝试不同的解决方案两天后,我仍然无处可去。任何人都希望看到我在这里遇到问题的实际网站http://codepen.io/Ramins01/pen/rxExKw
答案 0 :(得分:2)
XMLHttpRequest受same-origin policy的限制。但是,有一个few different ways来从另一个域获取数据。在这种情况下最简单的可能是使用JSONP with jQuery。 Wikipedia API支持JSONP。
以下是使用JSONP的Wikipedia opensearch query示例:http://codepen.io/slaporte/pen/ZQgjQj
var search_term = 'Coffee';
var api_url = "https://en.wikipedia.org/w/api.php";
$.ajax({url: api_url,
dataType: 'jsonp',
jsonp: 'callback',
data: {action: 'opensearch',
search: search_term,
limit: 5,
format: 'json'},
success: function(response) {
// Now you have search results!
console.log(response);
}
});