【问题标题】:How to add appropriate header for axios GET request?如何为 axios GET 请求添加适当的标头?
【发布时间】:2018-07-01 12:36:59
【问题描述】:

我的错误消息:“无法加载http://localhost:8080/db:请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源'http://localhost:3000'。”

我的前端服务器在 localhost:3000 上运行

componentDidMount() {
  axios
    .get('http://localhost:8080/db')
    .then(response => console.log(response))
    .catch(err => console.log(err));
}

这是在我的快递文件中:

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept'
  );
  res.setHeader(
    'Access-Control-Allow-Methods',
    'POST, GET, PATCH, DELETE, OPTIONS'
  );
  next();
});

【问题讨论】:

  • 你有一台运行在 8080 端口的服务器吗?
  • 新错误消息:“无法加载localhost:8080/db:请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源'localhost:3000'。 "
  • 这是一个 CORS 错误,因此您可能需要对此进行一些研究……然后如果您仍有问题,请使用更具体的问题更新问题。另外,我认为您应该尝试res.header()res.set(),因为我不清楚setHeader works(请注意,我不是专家)。

标签: reactjs http axios


【解决方案1】:

这看起来你的服务器根本没有运行,或者不在那个端口上。

你必须用这样的一行来告诉表达在哪里听:

app.listen(8080, () => console.log('Example app listening on port 8080!'))

然后运行它(假设你的服务器代码在一个名为 app.js 的文件中)

node app.js

【讨论】:

  • 对不起,我问这个问题时忘记运行服务器了。这是我需要解决的实际错误消息:“无法加载localhost:8080/db:请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源'localhost:3000'。”
【解决方案2】:

我能够通过安装此软件包并启用所有 cors 来解决此问题。

https://github.com/expressjs/cors

【讨论】:

    【解决方案3】:

    如果您在 chrome 中运行它。请使用以下扩展名 让它工作。

    enable cross-origin.

    您也可以从后端代码启用跨域。

    【讨论】:

      猜你喜欢
      • 2019-04-11
      • 2019-10-21
      • 2013-10-28
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多