【问题标题】:node API, React on same EC2 Machine with different ports...why XHR failed error?节点 API,在具有不同端口的同一台 EC2 机器上做出反应……为什么 XHR 失败错误?
【发布时间】:2021-01-17 18:36:51
【问题描述】:

我正在尝试在同一台 EC2 机器上运行 Node 和 React。我在开发人员工具的网络选项卡中收到错误 XHR (178) failed 错误。奇怪的是,当我将代码指向 localhost 并在笔记本电脑上运行 Node 时,代码运行良好。我还可以通过 Postman 连接到 API 并获取返回的数据。我认为这与安全性和权限有关。我在 EC2 上有一个自定义 TCP 入站(端口 3000)策略,并使用 0.0.0.0/0 打开出站。

这是一个代码 sn-p。

axios({
      method: "post",
      url: `${API_URL}auth?email=${emailAddress}&password=${pword}`,
      headers: {
        "content-type": "application/json",
      },
      data: JSON.stringify(params),
    })
      .then((result) => {
        console.log(`status ${result.status}`);
        if (result.status === 200) {
          console.log(JSON.stringify(result.data));

另外,我的开发机器是 Windows,我的 EC2 实例是 Linux。

有人知道我为什么会收到 XHR 错误吗?您能否指出正确的方向来帮助解决此问题?

 "dependencies": {
    "@hapi/joi": "^17.1.1",
    "arangojs": "^5.8.0",
    "aws-sdk": "^2.735.0",
    "bcryptjs": "^2.4.3",
    "config": "^3.3.1",
    "cors": "^2.8.5",
    "dynamoose": "^2.3.0",
    "express": "^4.17.1",
    "googleapis": "^57.0.0",
    "helmet": "^3.23.1",
    "jsonwebtoken": "^8.5.1",
    "lodash": "^4.17.20",
    "mongoose": "^5.9.20",
    "morgan": "^1.10.0",
    "request-promise-native": "^1.0.8",
    "winston": "^3.3.0"
  },
  "devDependencies": {
    "chai": "^4.2.0",
    "mocha": "^8.1.1",
    "nyc": "^15.1.0"
  }

我在节点端有以下代码。 (本地主机替换为我的产品服务器路径)


router.use(function (req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost:3000"); // update to match the domain you will make the request from
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept,X-Auth-Token"
  );
  next();
});

【问题讨论】:

  • 首先,这将是一个跨源请求,因为源(主机+端口)不同。因此,CORS 的所有规则都将适用。你说它在本地工作 - 你能分享你的 package.json 的样子吗?我怀疑它只通过你的 React 服务器代理请求,所以当你在本地运行它时它不会是跨域的。
  • 这是我学到很多关于 CORS 的地方:developer.mozilla.org/en-US/docs/Web/HTTP/CORS
  • 感谢您的回复。我更新了 package.json 中的依赖关系,我正在使用 cors 包。

标签: node.js reactjs amazon-ec2 xmlhttprequest


【解决方案1】:

好的,我复制AWS服务器的URL时出错了。我没有包含 http:// 谢谢所有考虑过我的问题的人。

【讨论】:

    猜你喜欢
    • 2013-10-06
    • 2022-01-02
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2018-12-28
    相关资源
    最近更新 更多