【问题标题】:How to solve a cross domain issue for fetching json data from a different url in javascript?如何解决从 javascript 中的不同 url 获取 json 数据的跨域问题?
【发布时间】:2019-09-01 15:14:53
【问题描述】:

我正在尝试从 URL 获取 JSON 数据,但它给了我一个错误(跨源请求被阻止:同源策略不允许读取位于 http://core.agricx.com/api/Apiagricx/get_config_test 的远程资源。(原因:CORS 标头 'Access-Control- Allow-Origin' 缺失)。

后端代码(节点js)

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

前端代码(dashboard.js)

fetch('https://core.agricx.com/api/Apiagricx/get_config_test', {
    method: "GET",
    credentials: "include",
    cache: "no-cache"
})
.then(response => response.json())
.then(out => {
   console.log("for out");
   console.log(out);
})
.catch(err => {
   console.log("for err");
   console.error(err);
});

我希望您可以在直接输入 URL 时看到 JSON 数据输出。但是代码将进入 catch 块并阻止我从该 URL 获得的响应。

【问题讨论】:

  • 请确保此后端中间件位于端点之前。

标签: javascript node.js


【解决方案1】:

一个简单的方法是使用 node.js 包cors

安装包cors,并在server.js 或任何您的节点代码的开头包含以下代码。

var cors = require('cors')

var app = express()
app.use(cors())

有关更多详细信息和配置选项,请参阅related npm page

【讨论】:

  • 我也这样做了,但它不起作用,我试图从前端 js 获取数据,所以我尝试从 npm 安装 cors,然后尝试 app.use(cors()) 但是还是不行
  • 好的@swetasharma,您在使用它时遇到任何错误吗?只需将您尝试过的任何内容添加到问题本身即可。所以我们会知道还能想到什么。
  • 您的回复中没有相关的标头:如果您检查来自core.agricx.com/api/Apiagricx/get_config_test 的回复,您将看不到它们。您是否部署了代码?
  • @Rai 我在 server.js 中尝试过类似的方法 let cors = require('cors'); app.use(cors());但它不起作用
  • 你安装了包cors吗?像命令行中的npm install cors
猜你喜欢
  • 2013-08-13
  • 2021-09-14
  • 1970-01-01
  • 2019-12-01
  • 2017-04-13
  • 2011-11-17
  • 1970-01-01
  • 2012-10-07
  • 2019-11-14
相关资源
最近更新 更多