我有一个应用程序,这是一个普通的Express应用程序 - 简单的服务器逻辑、视图和大量客户端JS。我需要进行许多AJAX请求中的一些必须由HTTPS协议保护(有些则不需要)。
因此,我的服务器应该既可以使用HTTP也可以使用HTTPS。它还应该在本地机器上(通常使用nodemon运行)以及在Heroku上正常工作。
据我了解,Heroku只提供一个端口(process.env.PORT),您可以监听此端口,并通过代理处理所有请求(因此,您的应用程序正在监听此端口,而不会受到协议的影响 - 对吗?)
所以,我的理解是 - 我应该为开发机器和Heroku编写一些不同的代码?
例如:
因此,我的服务器应该既可以使用HTTP也可以使用HTTPS。它还应该在本地机器上(通常使用nodemon运行)以及在Heroku上正常工作。
据我了解,Heroku只提供一个端口(process.env.PORT),您可以监听此端口,并通过代理处理所有请求(因此,您的应用程序正在监听此端口,而不会受到协议的影响 - 对吗?)
所以,我的理解是 - 我应该为开发机器和Heroku编写一些不同的代码?
例如:
...
app = express()
...
if process.env.NODE_ENV == 'production'
app.listen(process.env.PORT)
else
https = require('https')
http = require('http')
http.createServer(app).listen(5080) # some local port
options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem') # my self-signed files
}
https.createServer(options, app).listen(5443) # some different local port
这是处理此事的适当方式吗?
return res.redirect('https://' + req.headers.host + req.url);
而不是从配置中获取? - Pavel Nikolov