请求正在与Postman合作,但生成的代码段没有

时间:2018-05-24 12:41:29

标签: javascript ajax postman

所以我试图通过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没有得到这个错误。

3 个答案:

答案 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这样的方法。