2011-11-16 21 views
5

में https पर एक अनुरोध आ रहा है, मैं अपने एक्सप्रेस ऐप में हमेशा सुरक्षित कनेक्शन का उपयोग करने के लिए कुछ मार्गों को मजबूर करना चाहता हूं। मैं यह सुनिश्चित करने के लिए कैसे जांच सकता हूं कि यह https का उपयोग कर रहा है?मैं कैसे जांच सकता हूं कि एक्सप्रेस

मैं अपने तैनाती के लिए उसकेोकू पर पिग्गीबैक एसएसएल का उपयोग कर रहा हूं।

उत्तर

9

मैं हेरोकू पर भी तैनात हूं। जब वे प्रॉक्सी को रिवर्स करने के लिए nginx का उपयोग करते हैं तो वे अपने शीर्षकों का एक गुच्छा जोड़ते हैं। इस मामले में रुचि का एक एक्स-फॉरवर्ड-प्रोटो होगा।

यह मैं क्या किया है:

app.get(/\/register$/, function(req, res){ 
    console.log(JSON.stringify(req.headers)); //to see all headers that heroku adds 
    if(req.headers['x-forwarded-proto'] && req.headers['x-forwarded-proto'] === "http") { 
    res.redirect("https://" + req.headers.host + req.url); 
    } 
    else { 
    //the rest of your logic to handle this route 
    } 
}); 
+0

बढ़िया! इससे बहुत मदद मिली। +1 :) –

0

एक सुरक्षित सर्वर (https) चलाने के लिए इसे एक गैर-सुरक्षित सर्वर (http) से स्वतंत्र रूप से बनाया जाना होगा। वे अलग बंदरगाहों पर भी सुनेंगे। कुछ इस तरह का प्रयास करें:

var express = require('express) 
    , app_insecure = express.createServer() 
    , app_secure = express.createServer({ key: 'mysecurekey' }) 

app_insecure.get('/secure-page',function(req, res){ 
    // This is an insecure page, redirect to secure 
    res.redirect('https://www.mysecuresite.com/secure-page') 
}) 

app_secure.get('/secure-page', function(req,res){ 
// Now we're on a secure page 
}) 

app_insecure.listen(80) 
app_secure.listen(443) 

या इस मार्ग मध्यस्थ के रूप लागू किया जा सकता

var redirect_secure = function(req, res, next){ 
    res.redirect('https://mysite.com' + req.url) 
} 

app_insecure.get('/secure-page',redirect_secure,function(req, res){}) 

अब आप केवल समारोह संदर्भ शामिल करने के लिए होगा: redirect_secure() पथ है कि आप पर पुनः निर्देशित करना चाहते हैं पर एक सुरक्षित स्थान

+0

Heroku पर पिग्गीबैक ssl मतलब यह होगा कि मैं एक ही सर्वर है कि, शायद एक सुरक्षित प्रमाणपत्र लोड संतुलन पर स्थापित असुरक्षित कनेक्शन पर सुरक्षित ले जा सकते हैं दोनों चल रहा हूँ, और मैं किसी भी तरह कि क्या जांच करने के लिए होगा मुझे सुरक्षित यातायात मिल रहा है। मतलब है कि मेरा असुरक्षित सर्वर अभी भी एक सुरक्षित सर्वर बनाने के बिना https ssl पर चल रहा है। – MonkeyBonkey

1

app.enable ('विश्वास प्रॉक्सी');

"वर्निश या निजिनक्स जैसे रिवर्स प्रॉक्सी के पीछे एक्सप्रेस का उपयोग करना मामूली है, हालांकि इसे कॉन्फ़िगरेशन की आवश्यकता होती है। ऐप.एनेबल ('ट्रस्ट प्रॉक्सी') के माध्यम से" ट्रस्ट प्रॉक्सी "सेटिंग को सक्षम करके, एक्सप्रेस को यह पता चलेगा कि यह है प्रॉक्सी के पीछे बैठा है और एक्स-फॉरवर्डेड- * हेडर फ़ील्ड भरोसा किया जा सकता है, जो अन्यथा आसानी से खराब हो सकता है। "

Express behind proxies doco

संबंधित मुद्दे

 संबंधित मुद्दे