【问题标题】:HTTPS POST Request from server to rpi-nodejs thru linksys router通过 linksys 路由器从服务器到 rpi-nodejs 的 HTTPS POST 请求
【发布时间】:2017-04-21 22:29:11
【问题描述】:

我正在尝试连接:Google Home 设备 -> API.AI Webhook -> RPi/nodejs 但 API.AI Webhook 需要 https URL。我尝试使用 Hurl.it POST 到我的路由器的 http url 并设置端口转发以使请求到达 rpi,我可以看到帖子来自运行 nodejs 的终端,该终端对请求做出适当的响应。

但是当我将 Hurl.it 更改为 https:// url 时,更改路由器的端口转发以将 443 请求路由到相同的 rpi 地址,并将侦听 80 的 nodejs 应用程序的 .env 端口更改为 443。 ..如果我运行 POST 请求,路由器日志记录 https 请求但 nodejs 应用程序没有响应,它只是继续侦听端口 443。这是 app.js 的链接:

KylesAppjsCode

我如何弄清楚为什么 nodejs 服务器应用程序没有收到请求,或者如果它收到了请求,那么为什么它没有响应请求?

【问题讨论】:

    标签: node.js raspberry-pi2


    【解决方案1】:

    app.listen() currently always uses http 从不使用 https,因此您需要创建自己的自定义 https 服务器并将 app 作为请求处理程序传递:

    require('https').createServer({ /* https config */ }, app)
                    .listen(process.env.PORT, function() {
      console.log('Listening on port ' + process.env.PORT);
    });
    

    代替:

    app.listen(process.env.PORT, function() {
      console.log('Listening on port ' + process.env.PORT);
    });
    

    【讨论】:

    • 我可以用 nginx“创建”那个服务器吗?我不知道该怎么做,但我在其他地方得到了这个建议。
    • 你可以随意设置,网上有很多教程。但是,对于这个特定问题,您需要自己致电https.createServer()
    • 好的我终于安装并配置了nginx。但是我在运行 sudo npm start 时得到一个Error: listen EADDRINUSE :::443。请注意,原始 http 发布到我的路由器 ip(转发到 rpinodejs lan ip)是成功的,并且 nginx 上虚拟 html 页面的 subdomain.domain.com 请求也成功。
    猜你喜欢
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2012-12-12
    • 1970-01-01
    • 2021-01-30
    相关资源
    最近更新 更多