我有一個應用程序,這是非常正常的快速應用程序 - 簡單的服務器邏輯,視圖,很多客戶端JS。 我必須做很多AJAX請求。其中一些需要通過HTTPS協議來保護(有些不需要)。Node.JS,Express和Heroku - 如何處理HTTP和HTTPS?
所以,我的服務器應該同時使用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
它是正確的方式來處理呢?
一個簡單的問題 - 我們可以得到這樣的回報'的res.redirect主機(的 'https://' + req.headers.host + req.url);'而不是從配置? –
可能是的,但什麼 - 只是爲了消除冗餘?你從瀏覽器中獲取標題。從配置(或環境變量)越來越重要的價值看起來像快遞4'app.set一個更可靠的選擇對我 – Guard