所以我试图通过AJAX在我的JavaScript中发送GET请求。问题是我可以发邮件中的请求,它工作正常。当我使用该功能生成AJAX代码并将其插入到我的本地index.html时,请求似乎被阻止。
var settings = {
"async": true,
"crossDomain": true,
"url": "http://www.bibsonomy.org/api/posts?resourcetype=bookmark&group=ukp&format=json",
"method": "GET",
"headers": {
"Authorization": "Basic key",
"Cache-Control": "no-cache"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
控制台输出:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource
at https://www.bibsonomy.org/api/posts?resourcetype=bookmark&group=ukp&format=json.
(Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
我不知道为什么它不起作用以及为什么Postman没有得到这个错误。
答案 0 :(得分:0)
请在请求标题中添加Access-Control-Allow-Origin: *
。
答案 1 :(得分:0)
您应该尝试将此添加到您的设置
xhrFields: {
withCredentials: true
},
crossDomain: true
答案 2 :(得分:0)
这必须从服务器端处理。仅当服务器添加标题时,它才允许来自localhost:port
的请求(如果您正在开发中),
或者你可以添加
设置Access-Control-Allow-Origin: "*"
以接受来自所有客户的请求,
浏览器将能够成功完成请求。
跨源验证是浏览器提供的针对跨域攻击的安全性。浏览器向服务器发送预检(OPTIONS)请求以确保请求是有效请求,并且在成功返回时,仅发送有效请求。 因此,解决此问题的可靠方法是在api提供程序(服务器)中修复以接受来自域/ localhost的请求。
但是,您可以只为浏览器进行解决,可以查看answer这样的方法。