2009-09-09 16 views
22

मैं जानना चाहता हूं कि 301 रीडायरेक्ट हमेशा रेफरर को संरक्षित करता है या नहीं।क्या 301 रीडायरेक्ट हमेशा रेफरर को संरक्षित करता है?

मैं "gotoorig_https.html" नामक एक पृष्ठ बनाता हूं जिसमें "orig_https.asp" पृष्ठ पर हाइपरलिंक होता है।
"orig_https.asp" 301 "dest.html" पर रीडायरेक्ट करेगा जो document.referrer दिखाता है।

इस मामले में,

http page(gotoorig_https.html) -> orig_https.asp(301 redirect)-> https page (dest.html) <--the referrer preserves 
https page(gotoorig_https.html) -> orig_https.asp(301 redirect)-> https page (dest.html) <--the referrer preserves 

मैं भी एक पेज "gotoorig_http.html" कहा जाता है जो एक पेज "orig_http.asp" करने के लिए एक हाइपरलिंक शामिल हैं। "orig_http.asp" 301 "dest.html" पर रीडायरेक्ट करेगा जो document.referrer दिखाता है।

इस मामले में,

http page(gotoorig_http.html) -> orig_http.asp(301 redirect)-> http page (dest.html) <--the referrer preserves 
https page(gotoorig_http.html) -> orig_http.asp(301 redirect)-> http page (dest.html) <--the referrer DOES NOT preserve. 

पिछले मामले क्यों होता है?

उत्तर

26

आरएफसी स्थिति 301 परिभाषा में कोई रेफरर-विशिष्ट व्यवहार निर्दिष्ट नहीं करता है, न हीशीर्षलेख परिभाषा में 301-विशिष्ट व्यवहार निर्दिष्ट करता है। इस प्रकार, मुझे यह कहना है कि यद्यपि यह रेफरर-संरक्षित व्यवहार तार्किक है, लेकिन इसे आरएफसी में परिभाषित नहीं किया गया है और इस प्रकार आप कभी भी सुनिश्चित नहीं हो सकते हैं।

+0

+1 के बीच स्विच करते समय नहीं भेजा जाना चाहिए क्योंकि वे व्यवहार पर भरोसा नहीं करते हैं। जनरेटर भी फिक्र किया जा सकता है! – sybreon

-2

https से अधिक ब्राउज़र ब्राउज़र संदर्भ भेज रहे हैं। यह आरएफसी में है।

+4

सत्य नहीं है। एचटीटीपीएस पृष्ठों के बीच रेफरर हेडर के बारे में कल्पना में कुछ भी नहीं है, लेकिन spec का कहना है कि उन्हें HTTP और HTTPS – blowdart

11

HTTP और HTTPS के बीच जाने पर HTTP spec का कहना है कि एक रेफरर हेडर नहीं भेजा जाना चाहिए (RFC2616 में 15.1.3 देखें)। कल्पना यह नहीं कहती कि एचटीटीपीएस पृष्ठों के बीच क्या होना चाहिए।

दिलचस्प रूप से फ़ायरफ़ॉक्स इस मामले में spec को अनदेखा करने के लिए डिफ़ॉल्ट है, लेकिन नेटवर्क.http.sendSecureXSiteReferrer कॉन्फ़िगरेशन सेटिंग सेट करके अनुरूप बनाने के लिए बनाया जा सकता है।