नोड / जेएस / एक्सप्रेस के साथ स्वचालित HTTPS कनेक्शन / रीडायरेक्ट


182

मैं कोशिश कर रहा हूँ कि HTTPS मैं जिस नोड प्रोजेक्ट पर काम कर रहा हूँ, उसके साथ स्थापित किया जाए। मैंने अनिवार्य रूप से इस उदाहरण के लिए नोड.जेएस प्रलेखन का पालन ​​किया है :

// curl -k https://localhost:8000/
var https = require('https');
var fs = require('fs');

var options = {
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8000);

अब, जब मैं करता हूँ

curl -k https://localhost:8000/

मुझे मिला

hello world

जैसा सोचा था। लेकिन अगर मैं करता हूँ

curl -k http://localhost:8000/

मुझे मिला

curl: (52) Empty reply from server

रेट्रोस्पेक्ट में यह स्पष्ट प्रतीत होता है कि यह इस तरह से काम करेगा, लेकिन साथ ही, जो लोग अंततः मेरी परियोजना पर जाते हैं, वे https : // yadayada में टाइप करने नहीं जा रहे हैं , और मैं चाहता हूं कि जिस क्षण वे हिट हों, उससे सभी ट्रैफ़िक https हो। जगह।

मैं सभी आने वाले ट्रैफ़िक को https में सौंपने के लिए नोड (और एक्सप्रेस के रूप में एक्सप्रेस का उपयोग कर रहा हूं) कैसे प्राप्त कर सकता है, चाहे यह निर्दिष्ट किया गया हो या नहीं? मैंने ऐसा कोई दस्तावेज़ नहीं ढूंढा है, जिसने इसे संबोधित किया हो। या यह सिर्फ यह माना जाता है कि उत्पादन के माहौल में, नोड के पास कुछ ऐसा है जो इसके सामने बैठता है (जैसे कि नगनेक्स) जो इस तरह के पुनर्निर्देशन को संभालता है?

यह वेब विकास में मेरा पहला कदम है, इसलिए यदि यह कुछ स्पष्ट है तो कृपया मेरी अज्ञानता को क्षमा करें।


इस बात का उत्तर यहाँ दिया है: stackoverflow.com/a/23894573/1882064
arcseldon

3
HEROKU के लिए किसी को भी सूचित करने के लिए, इस प्रश्न के उत्तर आपकी सहायता नहीं करेंगे (आपको "बहुत अधिक रीडायरेक्ट मिलेंगे") लेकिन एक अन्य प्रश्न का यह उत्तर होगा
रिको काहलर

जवाबों:


179

रयान, मुझे सही दिशा में इशारा करने के लिए धन्यवाद। मैंने आपके उत्तर (2 वें पैराग्राफ) को कुछ कोड के साथ निकाल दिया और यह काम करता है। इस परिदृश्य में ये कोड स्निपेट मेरे एक्सप्रेस ऐप में डाले गए हैं:

// set up plain http server
var http = express.createServer();

// set up a route to redirect http to https
http.get('*', function(req, res) {  
    res.redirect('https://' + req.headers.host + req.url);

    // Or, if you don't want to automatically detect the domain name from the request header, you can hard code it:
    // res.redirect('https://example.com' + req.url);
})

// have it listen on 8080
http.listen(8080);

Https एक्सप्रेस सर्वर 3000 पर एटीएम को सुनता है। मैंने इन iptables नियमों को सेट किया है ताकि नोड को रूट के रूप में न चलना पड़े:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3000

सभी एक साथ, यह ठीक वैसा ही काम करता है जैसा मैं चाहता था।


15
वास्तव में महत्वपूर्ण प्रश्न (सुरक्षा के बारे में)। इससे पहले कि रीडायरेक्ट वास्तव में होता है, क्या किसी हमलावर के लिए एक कुकी (सत्र आईडी) को सूँघना और चोरी करना संभव है?
कोस्टा

4
मैं इस परिणामी लक्षण को कैसे ठीक करूंगा? Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects
बोडिन

16
वास्तव में, यह बेहतर लगता है , ... बस के साथ पुनर्निर्देशितif(!req.secure){}
चोदना

6
मैं सिर्फ एक और पोस्ट में दिए गए सुरक्षा के बारे में @ कोस्टा के महत्वपूर्ण सवाल का जवाब देना चाहता हूं - stackoverflow.com/questions/8605720/…
ThisClark

2
एक if(req.protocol==='http')बयान के आसपास लपेट करना चाहते हो सकता है
अधिकतम 5

120

यदि आप पारंपरिक पोर्ट का अनुसरण करते हैं, क्योंकि HTTP डिफ़ॉल्ट रूप से पोर्ट 80 का प्रयास करता है और HTTPS डिफ़ॉल्ट रूप से पोर्ट 443 की कोशिश करता है, तो आप बस एक ही मशीन पर दो सर्वर रख सकते हैं: यहाँ कोड है:

var https = require('https');

var fs = require('fs');
var options = {
    key: fs.readFileSync('./key.pem'),
    cert: fs.readFileSync('./cert.pem')
};

https.createServer(options, function (req, res) {
    res.end('secure!');
}).listen(443);

// Redirect from http port 80 to https
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
    res.end();
}).listen(80);

Https के साथ टेस्ट करें:

$ curl https://127.0.0.1 -k
secure!

Http के साथ:

$ curl http://127.0.0.1 -i
HTTP/1.1 301 Moved Permanently
Location: https://127.0.0.1/
Date: Sun, 01 Jun 2014 06:15:16 GMT
Connection: keep-alive
Transfer-Encoding: chunked

अधिक विवरण: Nodejs HTTP और HTTPS एक ही पोर्ट पर


4
res.writeHead(301, etc.)केवल GET कॉल के लिए सही तरीके से काम करने जा रहा है, क्योंकि 301ग्राहक को उसी विधि का उपयोग करने के लिए नहीं कह रहा है। यदि आप उपयोग की जाने वाली विधि (और अन्य सभी मापदंडों) को रखना चाहते हैं, जिसका आपको उपयोग करना है res.writeHead(307, etc.)। और अगर यह अभी भी काम नहीं करता है, तो आपको कुछ आसन्न करना पड़ सकता है। स्रोत: http://stackoverflow.com/a/17612942/1876359
ocramot

113

इस आदमी को धन्यवाद: https://www.tonyerwin.com/2014/09/redirecting-http-to-https-with-nodejs.html

app.use (function (req, res, next) {
        if (req.secure) {
                // request was via https, so do no special handling
                next();
        } else {
                // request was via http, so redirect to https
                res.redirect('https://' + req.headers.host + req.url);
        }
});

11
यह सबसे अच्छा जवाब है!
स्टीफन

3
सहमत, पहला जवाब होना चाहिए।
1984

12
निम्नलिखित पंक्ति ने मेरे लिए इस समाधान कार्य में मदद की:app.enable('trust proxy');
arbel03

2
जैसा कि ऊपर लिखा गया है। (उदाहरण के लिए, 3000) अपने वीपीसी के वेबसर्वर पर।
अलनवरिंग

1
के लिए एडब्ल्यूएस ईएलबी का उपयोग app.get('X-Forwarded-Proto') != 'http'करने के बजाय req.secure aws.amazon.com/premiumsupport/knowledge-center/...
शक

25

Nginx के साथ आप "x-forwarded-proto" हेडर का लाभ उठा सकते हैं:

function ensureSec(req, res, next){
    if (req.headers["x-forwarded-proto"] === "https"){
       return next();
    }
    res.redirect("https://" + req.headers.host + req.url);  
}

5
मैंने पाया कि req.headers ["x-forwarded-proto"] === "https") विश्वसनीय नहीं है, हालाँकि req.secure काम करता है!
जुगवाल्ट

मुझे वही मिला, यह बहुत अविश्वसनीय लगता है।
डेकोपेनहेगन

2
req.secure एक उचित तरीका है, हालाँकि यदि आप एक प्रॉक्सी के पीछे हैं तो यह छोटी गाड़ी है क्योंकि req.secure, proto == "https" के बराबर है, हालाँकि एक प्रॉक्सी एक्सप्रेस के पीछे आपका प्रोटो, https
dopopenhagen

7
आपको यह करने की आवश्यकता है app.enable('trust proxy');: "ऐप एक फ्रंट-फेसिंग प्रॉक्सी के पीछे है, और कनेक्शन और क्लाइंट के आईपी पते को निर्धारित करने के लिए एक्स-फॉरवर्डेड - * हेडर का उपयोग करने के लिए है।" expressjs.com/en/4x/api.html#app.set
dskrvk 18

यूरल्स को स्ट्रिंग्स के रूप में न मानें, इसके बजाय url मॉड्यूल का उपयोग करें।
आर्बोरियल 84

12

0.4.12 तक हमारे पास नोड के HTTP / HTTPS सर्वर का उपयोग करके उसी पोर्ट पर HTTP और HTTPS के लिए सुनने का कोई वास्तविक तरीका नहीं है।

कुछ लोगों ने Node का HTTPS सर्वर होने के कारण इस समस्या को हल कर दिया है (यह Express.js के साथ भी काम करता है) 443 (या कुछ अन्य पोर्ट) को सुनें और 80 तक एक छोटा http सर्वर बाइंड करें और उपयोगकर्ताओं को सुरक्षित पोर्ट पर रीडायरेक्ट करें।

यदि आपको पूरी तरह से एक ही पोर्ट पर दोनों प्रोटोकॉल को संभालने में सक्षम होना है, तो आपको उस पोर्ट पर nginx, lighttpd, Apache, या कुछ अन्य वेब सर्वर को डालने की आवश्यकता है और Node के लिए रिवर्स प्रॉक्सी के रूप में कार्य करना होगा।


धन्यवाद रयान। "... एक छोटा http सर्वर 80 से बांधता है और पुनर्निर्देशित करता है ..." मुझे लगता है कि आप एक और नोड http सर्वर का मतलब है। मुझे लगता है कि मुझे इस बात का अंदाजा है कि यह कैसे काम कर सकता है लेकिन क्या आप किसी उदाहरण कोड की ओर इशारा कर सकते हैं? इसके अलावा, क्या आप जानते हैं कि इस मुद्दे का "क्लीनर" समाधान नोड रोडमैप में कहीं भी है?
जेक

आपके Node.js एप्लिकेशन में कई http (s) सर्वर हो सकते हैं। मैंने Node.js मुद्दों ( github.com/joyent/node/issues ) और मेलिंग सूची ( group.google.com/group/nodejs ) की जाँच की और रिपोर्ट की गई कोई समस्या नहीं देखी, लेकिन समस्या के बारे में युगल पोस्ट देखीं मेलिंग सूची पर। जहां तक ​​मैं बता सकता हूं कि यह पाइप में नहीं है। मैं इसे जीथब पर रिपोर्ट करने और आपको क्या प्रतिक्रिया मिल रही है, यह देखने की सलाह दूंगा।
रयान ओलड्स

वास्तव में महत्वपूर्ण प्रश्न (सुरक्षा के बारे में)। इससे पहले कि रीडायरेक्ट वास्तव में होता है, क्या एक "हमलावर" के लिए एक कुकी (सत्र आईडी) को सूँघना और चोरी करना संभव है?
कोस्टा

हां, एक 3xx स्थिति कोड और संभवतः एक स्थान हेडर एजेंट को वापस भेजा जाता है, जिस बिंदु पर एजेंट स्थान हेडर द्वारा निर्दिष्ट URL का अनुरोध करता है।
रयान ओल्‍ड्स

यह 2015 है, क्या यह अभी भी मामला है?
theEnvironmentalist

10

आप एक्सप्रेस-बल-https मॉड्यूल का उपयोग कर सकते हैं :

npm install --save express-force-https

var express = require('express');
var secure = require('express-force-https');

var app = express();
app.use(secure);

1
इसका उपयोग सावधानी के साथ करें क्योंकि पैकेज वर्षों में अपडेट नहीं किया गया है। मैं AWS के मुद्दों में भाग गया जहाँ एन्कोडिंग खराब थी।
मार्तविस पी।

1
बहन पैकेज: npmjs.com/package/express-to-https - लेकिन मुझे कोई पता नहीं है अगर यह काम करता है / isbetter / etc
quetzalcoatl

ध्यान दें कि यदि आप स्थिर फ़ाइलों (एकल-पृष्ठ ऐप्स सहित) की सेवा करने के लिए मिडलवेयर का उपयोग कर रहे हैं, तो किसी भी रीडायरेक्ट मिडलवेयर को appपहले संलग्न किया जाना चाहिए । ( इस उत्तर को देखें )
मैथ्यू आर।

9

मैं बसारत द्वारा प्रस्तावित समाधान का उपयोग करता हूं लेकिन मुझे पोर्ट को ओवरराइट करने की भी आवश्यकता है क्योंकि मैं HTTP और HTTPS प्रोटोकॉल के लिए 2 अलग-अलग पोर्ट हुआ करता था।

res.writeHead(301, { "Location": "https://" + req.headers['host'].replace(http_port,https_port) + req.url });

मैं रूट विशेषाधिकार के बिना नोडज शुरू करने के लिए मानक पोर्ट का उपयोग नहीं करना भी पसंद करता हूं। मुझे lots० lots० और 3४४३ पसंद हैं क्योंकि मैं टॉमकैट पर बहुत सालों की प्रोग्रामिंग से आया था।

मेरी पूरी फाइल बन जाती है

var fs = require('fs');
var http = require('http');
var http_port    =   process.env.PORT || 8080; 
var app = require('express')();

// HTTPS definitions
var https = require('https');
var https_port    =   process.env.PORT_HTTPS || 8443; 
var options = {
   key  : fs.readFileSync('server.key'),
   cert : fs.readFileSync('server.crt')
};

app.get('/', function (req, res) {
   res.send('Hello World!');
});

https.createServer(options, app).listen(https_port, function () {
   console.log('Magic happens on port ' + https_port); 
});

// Redirect from http port to https
http.createServer(function (req, res) {
    res.writeHead(301, { "Location": "https://" + req.headers['host'].replace(http_port,https_port) + req.url });
    console.log("http request, will go to >> ");
    console.log("https://" + req.headers['host'].replace(http_port,https_port) + req.url );
    res.end();
}).listen(http_port);

फिर मैं अपने HTTP और HTTPS पोर्ट पर 80 और 443 ट्रैफिक को फॉरवर्ड करने के लिए iptable का उपयोग करता हूं।

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443

धन्यवाद लोरेंजो, यह मेरे लिए काम किया। विकल्पों का उपयोग करने के बजाय, मैंने letencrypt का उपयोग किया। मैंने var विकल्प हटा दिए। मैंने Letencrypt पैरामीटर (PrivateKey, प्रमाणपत्र, सीए और क्रेडेंशियल) जोड़े, और मैंने विकल्पों को क्रेडेंशियल्स में बदल दिया: https.createServer (क्रेडेंशियल्स, ऐप)
Nhon Ha

8

एक्सप्रेस 4.0 के साथ काम करने के लिए इस उत्तर को अपडेट करने की आवश्यकता है। यहाँ मुझे काम करने के लिए अलग http सर्वर मिला है:

var express = require('express');
var http = require('http');
var https = require('https');

// Primary https app
var app = express()
var port = process.env.PORT || 3000;
app.set('env', 'development');
app.set('port', port);
var router = express.Router();
app.use('/', router);
// ... other routes here
var certOpts = {
    key: '/path/to/key.pem',
    cert: '/path/to/cert.pem'
};
var server = https.createServer(certOpts, app);
server.listen(port, function(){
    console.log('Express server listening to port '+port);
});


// Secondary http app
var httpApp = express();
var httpRouter = express.Router();
httpApp.use('*', httpRouter);
httpRouter.get('*', function(req, res){
    var host = req.get('Host');
    // replace the port in the host
    host = host.replace(/:\d+$/, ":"+app.get('port'));
    // determine the redirect destination
    var destination = ['https://', host, req.url].join('');
    return res.redirect(destination);
});
var httpServer = http.createServer(httpApp);
httpServer.listen(8080);

1
मुझे यह httpApp.use ('* *, httpRouter) को बदलकर काम करने के लिए मिला; httpApp.use ('/', httpRouter); और hhtp सर्वर बनाने से पहले इसे लाइन में ले जाना।
कुंगवाज

8

यदि आपका ऐप एक विश्वसनीय प्रॉक्सी के पीछे है (जैसे AWS ELB या सही ढंग से कॉन्फ़िगर किया गया nginx), तो यह कोड काम करना चाहिए:

app.enable('trust proxy');
app.use(function(req, res, next) {
    if (req.secure){
        return next();
    }
    res.redirect("https://" + req.headers.host + req.url);
});

टिप्पणियाँ:

  • यह मानता है कि आप अपनी साइट को 80 और 443 पर होस्ट कर रहे हैं, यदि नहीं, तो आपको रीडायरेक्ट करने पर पोर्ट को बदलना होगा
  • यह भी मानता है कि आप SSL को प्रॉक्सी पर समाप्त कर रहे हैं। यदि आप ऊपर से @basarat से उत्तर का उपयोग करने के लिए SSL अंत कर रहे हैं। एंड टू एंड एसएसएल बेहतर समाधान है।
  • app.enable ('ट्रस्ट प्रॉक्सी') एक्स-फॉरवर्ड-प्रोटो हेडर की जांच करने के लिए एक्सप्रेस की अनुमति देता है

6

मुझे लगता है कि जब मैं एक्सप्रेस का उपयोग कर रहा हूं (बिना परीक्षण नहीं किया गया है, लेकिन मुझे संदेह है कि यह काम करता है)। एक्सप्रेस 3.4.3 के साथ वर्तमान नोड 0.10.22 का उपयोग करना

app.use(function(req,res,next) {
  if (!/https/.test(req.protocol)){
     res.redirect("https://" + req.headers.host + req.url);
  } else {
     return next();
  } 
});

5

यहां अधिकांश उत्तर req.headers.host हेडर का उपयोग करने का सुझाव देते हैं।

HTTP 1.1 द्वारा होस्ट हेडर की आवश्यकता है, लेकिन यह वास्तव में वैकल्पिक है क्योंकि हेडर वास्तव में एक एचटीटीपी क्लाइंट द्वारा नहीं भेजा जा सकता है, और नोड / एक्सप्रेस इस अनुरोध को स्वीकार करेगा।

आप पूछ सकते हैं: कौन सा HTTP क्लाइंट (उदाहरण के लिए: ब्राउज़र) उस हेडर को गायब करने का अनुरोध भेज सकता है? HTTP प्रोटोकॉल बहुत तुच्छ है। आप एक होस्ट हेडर नहीं भेजने के लिए, कोड की कुछ पंक्तियों में एक HTTP अनुरोध को तैयार कर सकते हैं, और यदि हर बार आपको एक विकृत अनुरोध प्राप्त होता है, तो आप एक अपवाद फेंकते हैं, और इस तरह के अपवादों को कैसे हैंडल करते हैं, इस पर निर्भर करते हुए, यह आपके सर्वर को नीचे ले जा सकता है।

इसलिए हमेशा सभी इनपुट को मान्य करें । यह व्यामोह नहीं है, मुझे मेरी सेवा में होस्ट हेडर की कमी के अनुरोध मिले हैं।

इसके अलावा, URL को कभी स्ट्रिंग्स के रूप में न मानें । किसी स्ट्रिंग के विशिष्ट भागों को संशोधित करने के लिए नोड url मॉड्यूल का उपयोग करें। URL को स्ट्रिंग्स के रूप में व्यवहार करना कई कई तरीकों से शोषण किया जा सकता है। यह मत करो।


यदि आपने एक उदाहरण दिया है तो आपका उत्तर सही होगा।
सर्प

वैध लगता है, लेकिन कुछ संदर्भ / लिंक बहुत अच्छा होगा।
जीवान

3
var express = require('express');
var app = express();

app.get('*',function (req, res) {
    res.redirect('https://<domain>' + req.url);
});

app.listen(80);

यह वही है जो हम उपयोग करते हैं और यह महान काम करता है!


1
यूरल्स को स्ट्रिंग्स के रूप में न मानें, इसके बजाय url मॉड्यूल का उपयोग करें।
आर्बोरियल 84

4
जिम्मेदारी की भावना के साथ उदाहरण दें। स्टैक ओवरफ्लो टेलीफोन गेम है।
arboreal84

1
यह अनंत लूप का कारण नहीं होगा?
मुहम्मद उमर

नहीं, क्योंकि यह केवल पोर्ट 80 पर सुनता है और पोर्ट 443 को भेजता है। एक अनंत लूप का एकमात्र तरीका होगा यदि कुछ श्रोता 443 पर वापस 80 पर रीडायरेक्ट करते हैं जो मेरे कोड में नहीं है। मुझे उम्मीद है कि इसका कोई अर्थ है। धन्यवाद!
निक कोटेनबर्ग

3

HTTP और HTTPS को एक ही पोर्ट पर सुनने के लिए आप "नेट" मॉड्यूल का उपयोग कर सकते हैं

var https = require('https');
var http = require('http');
var fs = require('fs');

var net=require('net');
var handle=net.createServer().listen(8000)

var options = {
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(handle);

http.createServer(function(req,res){
  res.writeHead(200);
  res.end("hello world\n");
}).listen(handle)

5
जब मैं इसे नोड 0.8 पर चलाता हूं, तो केवल अंतिम सर्वर जो कॉल करता है। इस मामले में, HTTP काम करता है, लेकिन HTTPS नहीं। यदि मैं .createServer के आदेश को उलट देता हूं, तो HTTP काम करता है, लेकिन HTTPS नहीं। :(
Joe

1
यह वर्णित के रूप में काम नहीं करता है। मैं इस मुद्दे की पुष्टि कर सकता हूँ जो देखा।
Stepan Mazurov

2

यह मेरे लिए काम किया:

app.use(function(req,res,next) {
    if(req.headers["x-forwarded-proto"] == "http") {
        res.redirect("https://[your url goes here]" + req.url, next);
    } else {
        return next();
    } 
});

यह सही हो सकता है, लेकिन आपको यह विस्तृत रूप से बताना चाहिए कि यह प्रश्नकर्ता के प्रश्न का उत्तर कैसे देता है।
जो सी

1

आप 2 Node.js सर्वर को तुरंत कर सकते हैं - एक HTTP और HTTPS के लिए

आप एक सेटअप फ़ंक्शन को भी परिभाषित कर सकते हैं जिसे दोनों सर्वर निष्पादित करेंगे, ताकि आपको अधिक डुप्लिकेट कोड लिखने की आवश्यकता न हो।

यहां मैंने ऐसा किया है: (restify.js का उपयोग करते हुए, लेकिन एक्सप्रेस के लिए काम करना चाहिए। या खुद भी नोड करें)

http://qugstart.com/blog/node-js/node-js-restify-server-with-both-http-and-https/


0

यह मेरे लिए काम किया:

/* Headers */
require('./security/Headers/HeadersOptions').Headers(app);

/* Server */
const ssl = {
    key: fs.readFileSync('security/ssl/cert.key'),
    cert: fs.readFileSync('security/ssl/cert.pem')
};
//https server
https.createServer(ssl, app).listen(443, '192.168.1.2' && 443, '127.0.0.1');
//http server
app.listen(80, '192.168.1.2' && 80, '127.0.0.1');
app.use(function(req, res, next) {
    if(req.secure){
        next();
    }else{
        res.redirect('https://' + req.headers.host + req.url);
    }
});

Https में रीडायरेक्ट करने से पहले हेडर जोड़ने की सलाह देते हैं

अब, जब आप करते हैं:

curl http://127.0.0.1 --include

आपको मिला:

HTTP/1.1 302 Found
//
Location: https://127.0.0.1/
Vary: Accept
Content-Type: text/plain; charset=utf-8
Content-Length: 40
Date: Thu, 04 Jul 2019 09:57:34 GMT
Connection: keep-alive

Found. Redirecting to https://127.0.0.1/

मैं 4.17.1 एक्सप्रेस का उपयोग करता हूं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.