मैं इस तरह से node.js में अपने ऐप के यूआरएल को रीडायरेक्ट करने की कोशिश कर रहा हूं:

// response comes from the http server
response.statusCode = 302;
response.setHeader("Location", "/page");
response.end();

लेकिन वर्तमान पृष्ठ नए के साथ मिश्रित है, यह अजीब लगता है:| मेरा समाधान पूरी तरह से तार्किक लग रहा था, मैं वास्तव में नहीं जानता कि ऐसा क्यों होता है, लेकिन अगर मैं पुनर्निर्देशन के बाद पृष्ठ को पुनः लोड करता हूं तो यह काम करता है।

वैसे भी HTTP नोड में रीडायरेक्ट करने का सही तरीका क्या है?

14
Adam Halasz 4 जून 2011, 06:47

5 जवाब

सबसे बढ़िया उत्तर

ऐसा लगता है कि एक्सप्रेस इसे वैसे ही करता है जैसे आपके पास है। मैं जो अंतर देख सकता हूं वह यह है कि वे कुछ शरीर सामग्री को धक्का देते हैं और एक पूर्ण यूआरएल का उपयोग करते हैं।

एक्सप्रेस प्रतिक्रिया देखें। रीडायरेक्ट विधि:

https://github.com/visionmedia/express/blob/master/lib/response.js#L335

// Support text/{plain,html} by default
  if (req.accepts('html')) {
    body = '<p>' + http.STATUS_CODES[status] + '. Redirecting to <a href="' + url + '">' + url + '</a></p>';
    this.header('Content-Type', 'text/html');
  } else {
    body = http.STATUS_CODES[status] + '. Redirecting to ' + url;
    this.header('Content-Type', 'text/plain');
  }

  // Respond
  this.statusCode = status;
  this.header('Location', url);
  this.end(body);
};
8
Geoff Chappell 4 जून 2011, 16:23
server = http.createServer(
    function(req, res)
    {
        url ="http://www.google.com";
        body = "Goodbye cruel localhost";
        res.writeHead(301, {
             'Location': url,
             'Content-Length': body.length,
             'Content-Type': 'text/plain' });

        res.end(body);
    });
3
Brad 31 जुलाई 2015, 08:33

हाँ, यह setHeader में पूर्ण url होना चाहिए।

  res.statusCode = 302;
  res.setHeader('Location', 'http://' + req.headers['host'] + ('/' !== req.url)? ( '/' + req.url) : '');
  res.end();
2
Kamrul 25 मार्च 2014, 04:01

क्या होता है यदि आप इसे इसके बजाय 307 में बदलते हैं?

1
jcolebrand 4 जून 2011, 07:55

यह समस्या इस बात पर भी निर्भर हो सकती है कि आप किस प्रकार के अनुरोध को हैंडल कर रहे हैं। हेडर का उपयोग करके एक POST अनुरोध को पुनर्निर्देशित नहीं किया जा सकता है। उदाहरण के लिए, एफबी में आपके ऐप से पहली बार आने वाला आगंतुक "हस्ताक्षरित अनुरोध" पोस्ट के माध्यम से आने की संभावना है और इसलिए रीडायरेक्ट काम नहीं करेगा।

0
Rob 8 अप्रैल 2014, 20:07