Tôi có một ứng dụng khá bình thường Express app - logic máy chủ đơn giản, lượt xem, rất nhiều JS phía máy khách. Tôi phải thực hiện nhiều yêu cầu AJAX. Một số người trong số họ cần phải được bảo đảm bằng giao thức HTTPS (một số không cần thiết).Node.JS, Express và Heroku - cách xử lý HTTP và HTTPS?
Vì vậy, máy chủ của tôi sẽ hoạt động với cả HTTP và HTTPS. Nó cũng sẽ làm việc o cả hai máy địa phương (chạy với nodemon bình thường) và trên Heroku. Theo như tôi đã hiểu, Heroku cung cấp cho bạn một cổng duy nhất (process.env.PORT), bạn có thể nghe và xử lý tất cả các yêu cầu thông qua proxy (vì vậy, ứng dụng của bạn đang lắng nghe cổng này và không làm phiền về proto - right?)
Vì vậy, tôi có được quyền này không - Tôi nên có một số mã khác nhau cho máy dev và Heroku?
Giống như
...
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
Đó có phải là cách thích hợp để đối phó với điều này?
Câu hỏi nhanh - chúng tôi có thể lấy máy chủ lưu trữ như thế này 'return res.redirect ('https: //' + req.headers.host + req.url);' thay vì từ cấu hình? –
có thể có, nhưng những gì cho - chỉ để loại bỏ sự thừa? bạn nhận được tiêu đề từ trình duyệt. nhận được các giá trị quan trọng từ cấu hình (hoặc biến env) trông giống như một tùy chọn đáng tin cậy hơn đối với tôi – Guard