javascript - 403 禁止响应 JSONP 请求

标签 javascript jquery json node.js jsonp

第一次发布到 stackoverflow。

我只是想使用 jquery 从 json url 获取数据。 第一个问题是跨源请求 block ,即使有应该阻止此问题的库,例如 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

我正在使用 http-server,您可以使用 npm 安装它,以避免 chrome 出现 json MIME 类型问题。 这个类似的堆栈溢出答案说我需要为我的框架集成 jsonp 支持,但他们指的是 sinatra for ruby​​。 Why Does JSONP Call Return Forbidden 403 Yet URL can be accessed in a browser
所以我尝试了 npmjs jsonpclient 并仍然得到了禁止的响应。

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

最佳答案

问题:服务器 ( http://take-home-test.herokuapp.com ) 没有设置“Access-Control-Allow-Origin” header 。如果您有权访问服务器,请使用“--cors”选项启动它。又名:node bin/http-server --cors ...这将通过 Access-Control-Allow-Origin header 启用 CORS,并且应该可以解决您的问题。

如果您无权访问服务器。这是一个快速解决方案:通过 http://cors.io 代理您的请求。见下文。

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);
});

JSFiddle:http://jsfiddle.net/davemeas/4rt3s7ta/1/ (注意:您必须将 jQuery 添加到该 fiddle 中:))

关于javascript - 403 禁止响应 JSONP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36819223/

相关文章:

javascript - 根据给定值查找嵌套数组

javascript - JSON 在控制台日志中作为 [object Object] 返回

javascript - 在代码隐藏的 .cs 文件中访问 javascript 变量的值?

javascript - 使用 jQuery 创建具有特定类的元素的链接

jquery - 将 css 悬停类更改为 jquery 单击

java - java中的分割和验证比较表达式

javascript - 我如何让用户能够发布并将其保留在网站上?

php - 数据库更新时发出警报消息

javascript - 为什么匿名函数在其语句中比在调用中具有更多参数

javascript - 使用 JavaScript 或 Jquery 附加具有两个条件的行数据