我将下面的AJAX请求发送到MediaWiki API,并在控制台中显示以下消息:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://preview.cs50.io' is therefore not allowed access.
我没有做任何恶意的事情,而且我正在使用cloud9 IDE。我尝试将headers
选项添加到我的AJAX请求(一个简单的对象,其中一个原始键将我的域作为值),但API也不是这样。
此处的响应表明,出于安全原因,程序员不应该设置origin
标头,这是有道理的。不过,我需要访问API。我有任何追索权吗?
这是我第一次使用MediaWiki API和文档。
$(document).ready(function () {
// future search parameter provided by user
var search = "french";
// AJAX request options for MediaWiki API
var ajaxOptions = {
crossDomain: true,
dataType: "json",
url: "https://en.wikipedia.org/w/api.php",
method: "GET",
data: {
action:"query",
list:"search",
srsearch:search,
// titlesnippet may be more desirable, try both
srprop:"snippet",
srlimit:"50",
pwpprop:"title",
// may not be necessary given use of srlimit above, try and see
pwplimit:"50",
format:"json"
}
};
// AJAX request
$.ajax(ajaxOptions).done(updateDOM);
function updateDOM (json) {
$("#message").html(JSON.stringify(json));
}
});
答案 0 :(得分:1)
这只是阅读文档的一个教训。 MediaWiki文档将永远存在。在查看其中的许多树时,很容易迷失在API林中,特别是如果您对API的一般经验和/或没有使用MediaWiki的经验有限。
如果以类似于上面的方式发出AJAX / CORS请求,只需添加即可。 。 。
T
到ajaxOptions对象里面的数据对象的末尾,应该解决这个问题。