मैं इस तरह से node.js में अपने ऐप के यूआरएल को रीडायरेक्ट करने की कोशिश कर रहा हूं:
// response comes from the http server
response.statusCode = 302;
response.setHeader("Location", "/page");
response.end();
लेकिन वर्तमान पृष्ठ नए के साथ मिश्रित है, यह अजीब लगता है:| मेरा समाधान पूरी तरह से तार्किक लग रहा था, मैं वास्तव में नहीं जानता कि ऐसा क्यों होता है, लेकिन अगर मैं पुनर्निर्देशन के बाद पृष्ठ को पुनः लोड करता हूं तो यह काम करता है।
वैसे भी HTTP नोड में रीडायरेक्ट करने का सही तरीका क्या है?
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);
};
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);
});
हाँ, यह setHeader
में पूर्ण url होना चाहिए।
res.statusCode = 302;
res.setHeader('Location', 'http://' + req.headers['host'] + ('/' !== req.url)? ( '/' + req.url) : '');
res.end();
क्या होता है यदि आप इसे इसके बजाय 307 में बदलते हैं?
यह समस्या इस बात पर भी निर्भर हो सकती है कि आप किस प्रकार के अनुरोध को हैंडल कर रहे हैं। हेडर का उपयोग करके एक POST अनुरोध को पुनर्निर्देशित नहीं किया जा सकता है। उदाहरण के लिए, एफबी में आपके ऐप से पहली बार आने वाला आगंतुक "हस्ताक्षरित अनुरोध" पोस्ट के माध्यम से आने की संभावना है और इसलिए रीडायरेक्ट काम नहीं करेगा।
संबंधित सवाल
नए सवाल
url
एक URL (यूनिफ़ॉर्म रिसोर्स लोकेटर), वेब पर एक सार्वभौमिक पहचानकर्ता है। एक URL एक विशिष्ट स्थान पर एक वेब संसाधन का एक संदर्भ है, और उस संसाधन को पुनः प्राप्त करने के लिए एक साधन प्रदान करता है।