आज के अनुसार, 10 अक्टूबर 2014 , हरोकू सेडर स्टैक और एक्सप्रेसजेएस ~ 3.4.4 का उपयोग करते हुए , यहां कोड का एक कार्य समूह है।
यहां याद रखने वाली मुख्य बात यह है कि हम हरोकू में तैनात हैं। SSL समापन लोड बैलेंसर पर होता है, एन्क्रिप्टेड ट्रैफ़िक आपके नोड ऐप तक पहुंचने से पहले। यह जांचना संभव है कि क्या https का उपयोग req.headers ['x-forwarded-proto'] === 'https' के साथ अनुरोध करने के लिए किया गया था ।
हमें ऐप आदि के अंदर स्थानीय एसएसएल प्रमाण पत्र के साथ खुद को चिंता करने की आवश्यकता नहीं है क्योंकि आप अन्य वातावरणों में होस्टिंग कर सकते हैं। हालाँकि, आपको अपने स्वयं के प्रमाण पत्र, उप-डोमेन आदि का उपयोग करते हुए सबसे पहले हरकू एड-ऑन के माध्यम से एक SSL एड-ऑन प्राप्त करना चाहिए।
फिर HTTPS से HTTPS के अलावा किसी अन्य चीज़ से रीडायरेक्ट करने के लिए बस निम्नलिखित जोड़ें। यह ऊपर दिए गए स्वीकृत उत्तर के बहुत करीब है, लेकिन:
- यह सुनिश्चित करता है कि आप "app.use" का उपयोग करें (सभी कार्यों के लिए, सिर्फ प्राप्त नहीं)
- स्पष्ट रूप से एक घोषित फ़ंक्शन में ForceSsl तर्क को बढ़ाता है
- "App.use" के साथ '*' का उपयोग नहीं करता है - यह वास्तव में विफल रहा जब मैंने इसका परीक्षण किया।
- यहां, मैं केवल उत्पादन में एसएसएल चाहता हूं। (अपनी आवश्यकताओं के अनुसार बदलें)
कोड:
var express = require('express'),
env = process.env.NODE_ENV || 'development';
var forceSsl = function (req, res, next) {
if (req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
return next();
};
app.configure(function () {
if (env === 'production') {
app.use(forceSsl);
}
// other configurations etc for express go here...
}
SailsJS (0.10.x) उपयोगकर्ताओं के लिए ध्यान दें। आप बस एपीआई / नीतियों के अंदर एक नीति (enforceSsl.js) बना सकते हैं:
module.exports = function (req, res, next) {
'use strict';
if ((req.headers['x-forwarded-proto'] !== 'https') && (process.env.NODE_ENV === 'production')) {
return res.redirect([
'https://',
req.get('Host'),
req.url
].join(''));
} else {
next();
}
};
फिर कॉन्फिग / पॉलिसियों से संदर्भ। जेएस के साथ-साथ कोई अन्य पॉलिसी, जैसे:
'*': ['प्रमाणित', 'लागू'
app.get('*',function(req,res,next){ if(req.headers['x-forwarded-proto']!='https') res.redirect('https://mypreferreddomain.com'+req.url) else next() })