【发布时间】:2016-08-17 14:00:45
【问题描述】:
第一次发布到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 禁止。 pic of the response in the network tab of chrome
我正在使用可以与 npm 一起安装的 http-server,以避免 chrome 出现 json MIME 类型的问题。
这个类似的堆栈溢出答案说我需要为我的框架集成 jsonp 支持,但他们指的是 ruby 的 sinatra。
Why Does JSONP Call Return Forbidden 403 Yet URL can be accessed in a browser
所以我尝试了 npmjs jsonpclient 仍然得到了禁止的响应。
有什么想法吗?这花了我一天多的时间。
【问题讨论】:
-
该资源是否需要某种身份验证?
-
我怀疑。此 api 是作为公司带回家面试测试的一部分提供的。
-
我认为这是 API 端点上的 Access-Control-Allow-Origin 标头的问题。
-
尝试使用“--cors”选项启动您的服务器。 Aka: node bin/http-server --cors ... 这将通过 Access-Control-Allow-Origin 标头启用 CORS,应该可以解决您的问题。
标签: javascript jquery json node.js jsonp