【问题标题】:Reading json content from a REST API URL从 REST API URL 读取 json 内容
【发布时间】:2017-08-03 04:58:43
【问题描述】:

我已经使用 Node.js Express http://localhost:3000/api/feeds 和 node.js 构建了一个 REST API,并填充了数据。

router.get('/api/feeds', function (req, res, next) {
    documentDBConfig.getAllDocuments()
        .then(() => res.json(documentDBConfig.feedsArray));
});

现在我制作了一个静态网站,并希望使用 javascript 或 jquery 从我的 REST API 获取数据。我用了这段代码

$.getJSON( "http://localhost:3000/api/feeds", function( data ) {
    console.log(data);
});

但它一直在说

XMLHttpRequest cannot load http://localhost:3000/api/feeds. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.

我知道我做错了,但我找不到正确的方法。如何从我的 REST API (http://localhost:3000/api/feeds) 获取我的网站的这个 json 内容?

编辑:我没有通过资源管理器收到此警告,但我无法获取内容。现在我解决了 chrome 问题,因此我不再收到此警告。但我无法阅读内容。这不是重复。

现在我收到了这个警告

Failed to load resource: the server responded with a status of 404 (Not Found)

【问题讨论】:

  • @Deividas Karžinauskas 是的,已经阅读了这个答案,但我做的其他的正确吗?我的意思是我可以用这个 jquery 函数读取一个 url 内容吗?
  • 你的jquery函数不错。您需要更新服务器标头以允许来自其他 url 的请求。阅读帖子建议的资源。
  • @Deividas Karžinauskas 但我没有收到资源管理器的警告,我也无法获得 json 内容。

标签: javascript jquery json rest api


【解决方案1】:

您能否向我们展示您的 REST api 代码以便我们为您提供帮助?您需要在后端设置一些标头以允许来自其他来源的请求。

如果你碰巧使用快递,这将help你。但是您可以通过其他方式构建 REST api,因此请向我们提供更多信息。

【讨论】:

  • 我已经添加了代码 app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header(" Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); });但什么都没有改变
  • Thanx Abdel,我通过这种方式在 explorer wel 中获取了数据。用 chrome 就不行了
  • @LeventOner 没问题!您一直在正确执行请求。下次请确保在开始提问之前进行足够的谷歌搜索。人们不喜欢经常回答的问题。
【解决方案2】:

这是因为您正在访问来自另一个域的资源。 您尝试从http://localhost:63342 访问http://localhost:3000。 你可以在这里阅读更多关于这个https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Access-Control-Allow-Origin

【讨论】:

  • 其余的我做对了吗?我的意思是我可以用这个 jquery 函数读取一个 url 内容吗?
  • 是的,你使用了正确的功能。
  • 但是我没有得到资源管理器的这个警告,我也不能得到 json 内容。
【解决方案3】:

基本上,您正在执行 CORS 请求,这意味着您正在尝试调用不同服务器上的资源。因此,您的 REST api 应该通过添加允许 UI 服务器资源的响应标头来允许 CORS 请求。 Please Refer to this question if it helps

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2015-08-26
    • 2011-09-14
    • 2011-09-11
    相关资源
    最近更新 更多