【问题标题】:Nodejs server on my PC not receiving POST request from AWS instance我的 PC 上的 Nodejs 服务器没有收到来自 AWS 实例的 POST 请求
【发布时间】:2019-12-22 07:08:27
【问题描述】:

我有两个 nodejs 文件。一个从 AWS EC2 实例发送一个发布请求(使用 axios),一个在我的 PC 上接收它(使用 express)。出于某种原因,我的 PC nodejs 服务器没有收到发布请求。

我的接收器有这个代码:

app.post('/', function (req, res) {
    console.log(req.body)
    res.end("Request received!")
}

没有任何记录。

代码可能不是问题:在所有其他情况下,接收者记录请求正文,发送者记录响应,接收服务器正确处理它(将其放入 mongodb)。

它起作用的情况是:

  • 从我的 PC 发送,在我的 PC 中接收
  • 从 AWS 发送,在 AWS 中接收(不同的实例)
  • 从我的 PC 发送,在 AWS 中接收

我认为它可能被两端之一阻止,所以我使用安全组并打开 AWS 实例上的所有端口(传入和传出),然后我在计算机上的防火墙上设置了打开的规则所需的端口,它仍然无法正常工作。

我还在 axios 请求中添加了这些标头:

const headers = {
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Allow-Headers": "X-Requested-With",
    "Content-Type":"application/json"
}
axios.post('http://(myip):3001', {arr:inf}, {headers:header}).then((res)=>{...

但它仍然不起作用。有什么建议吗?

编辑:在我发送请求后 20 秒左右,发送它的节点服务器超时,返回 ETIMEDOUT

【问题讨论】:

    标签: node.js amazon-web-services http post axios


    【解决方案1】:

    您提到了以下三种情况: 从我的 PC 发送,在我的 PC 中接收 - 很好 从 AWS 发送,在 AWS 中接收(不同的实例) - 很好 从我的 PC 发送,在 AWS 中接收 - 很好,因为您必须使用 EC2 实例的公共 IP 才能从您的 PC 连接

    但是,除非您的 PC 具有公共 IP,否则从 EC2 发送到您的 PC 将无法正常工作。 EC2 实例的请求将如何到达您的 PC?

    【讨论】:

    • 我的电脑默认没有公网IP吗?我使用的 IP 是 ip.address() 使用 nodejs 模块 IP (npmjs.com/package/ip) 返回的 IP。如果这不是公共 IP,我如何知道我的公共 IP 是什么或如何获得公共 IP?
    • 没有。那不是公共IP。默认情况下,外部世界无法访问您的 PC。
    • 如果您通过路由器连接到 Internet(通常是这种情况),您只有一个私有 IP。要获得公共 IP,您需要与您的 ISP 交谈并花一些钱购买 IP。
    • 好的,我使用ip4.me获取我的公共IP,我将axios请求更改为直接到那里,但它仍然无法正常工作。
    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 2019-12-24
    • 2013-07-19
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多