Javascript 403对JSONP请求的禁止响应

Javascript 403对JSONP请求的禁止响应,javascript,jquery,json,node.js,jsonp,Javascript,Jquery,Json,Node.js,Jsonp,第一次过帐到stackoverflow 我只是尝试使用jquery从json url获取数据。 第一个问题是跨源请求块,即使使用本应停止此问题的库,如ajax跨源js(很抱歉不提供此链接,我太新了,这里没有超过2个链接),我仍然没有运气,相同的跨源错误 所以我搬到了JSONP url = "http://take-home-test.herokuapp.com/api/v1/works.json?callback=?" $.ajaxSetup({ dataType: "jsonp" }); $.

第一次过帐到stackoverflow

我只是尝试使用jquery从json url获取数据。 第一个问题是跨源请求块,即使使用本应停止此问题的库,如ajax跨源js(很抱歉不提供此链接,我太新了,这里没有超过2个链接),我仍然没有运气,相同的跨源错误

所以我搬到了JSONP

url = "http://take-home-test.herokuapp.com/api/v1/works.json?callback=?"
$.ajaxSetup({ dataType: "jsonp" });
$.getJSON(url, function(json) {
    console.log(data);
});
(我也尝试过JSONP请求的AJAX语法)

现在我可以在网络选项卡中看到数据正在返回,但状态为403禁止。

我使用的http服务器可以与npm一起安装,以避免chrome出现json MIME类型的问题。 这个类似的堆栈溢出回答说我需要为我的框架集成jsonp支持,但他们指的是sinatra for ruby。
所以我尝试了NPMJSONPClient,但仍然得到了禁止的响应

有什么想法吗?这花了我一天多的时间。

问题:服务器()没有设置“Access Control Allow Origin”头。如果您有权访问服务器,请使用“--cors”选项启动它。Aka:node bin/http服务器--cors。。。这将通过Access Control Allow Origin标头启用CORS,应该可以解决您的问题

如果您没有访问服务器的权限。这里有一个快速的解决方案:通过代理您的请求。见下文

url = 'http://take-home-test.herokuapp.com/api/v1/works.json?callback=?';
new_url = "http://cors.io/?u=" + encodeURIComponent( url );

$.ajaxSetup({ dataType: "jsonp" });
$.getJSON(new_url, function(json) {
    console.log(json);
});

JSFIDLE:(注意:您必须将jQuery添加到该FIDLE:)

这是我发现可以工作的最简单的代码版本,多亏了Dave Meas:

url = http://take-home-test.herokuapp.com/api/v1/works.json"
new_url = "http://crossorigin.me/" + url;
$.getJSON(new_url, function(json) {
console.log(json);
});

那个资源需要某种认证吗?我怀疑。此api是作为公司带回家面试测试的一部分提供的。我认为这是api终结点上的Access Control Allow Origin标头存在的问题。请尝试使用“--cors”选项启动服务器。Aka:node bin/http服务器--cors。。。这将通过Access Control Allow Origin标头启用CORS,应该可以解决您的问题。