2017-04-21 34 views
0

我试图连接:Google Home设备 - > API.AI Webhook - > RPi/nodejs,但API.AI webhook需要https URL。我试过Hurl.it POST到我的路由器的http url,并建立端口转发以使请求到达rpi,并且我可以看到从运行nodejs的终端进来的帖子,该终端响应请求。HTTPS POST通过linksys路由器从服务器到rpi-nodejs的请求

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

KylesAppjsCode

如何找出为什么nodejs服务器应用程序未获取请求,或者如果它收到请求,那么为什么它没有响应请求?

回答

2

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); 
}); 
+0

我可以“创造”是服务器与Nginx?我不知道该怎么做,但我在别处得到了这个建议。 – marciokoko

+0

你可以设置它,然而你想要的,有教程嘉豪在线。但是,对于这个特殊问题,您需要自己调用https.createServer()。 – mscdex

+0

好吧,我最终安装并配置了nginx。但是在运行sudo npm start时出现'Error:listen EADDRINUSE ::: 443'。请注意,我的路由器ip(转发给rpinodejs lan ip)的原始http发布成功,并且nginx上的虚拟html页面的https://subdomain.domain.com请求也成功。 – marciokoko

相关问题