Does 301 redirect always preserve referrer?

23,510

Solution 1

RFC doesn't specify any referrer-specific behavior in status 301 definition, nor 301-specific behavior in Referer header definition. Thus, I have to say that although this referrer-preserving behavior is logical, it is not defined in RFC and thus you can never be sure.

Solution 2

When going between HTTP and HTTPS the HTTP spec says that a referer header should NOT be sent (see 15.1.3 in RFC2616). The spec doesn't say what should happen between HTTPS pages however.

Interestingly firefox defaults to ignoring the spec in this case, but can be made to conform by setting the network.http.sendSecureXSiteReferrer configuration setting.

Share:
23,510
Billy
Author by

Billy

Experienced Java and C# Developer Always curious about different tech thing

Updated on December 24, 2020

Comments

  • Billy
    Billy over 3 years

    I want to know whether 301 redirect always preserve referrer.

    I make a page called "gotoorig_https.html" which contains a hyperlink to a page "orig_https.asp".
    "orig_https.asp" will 301 redirect to "dest.html" which shows the document.referrer.

    In this case,

    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  
    

    I also make a page called "gotoorig_http.html" which contains a hyperlink to a page "orig_http.asp". "orig_http.asp" will 301 redirect to "dest.html" which shows the document.referrer.

    In this case,

    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.
    

    Why does the last case happen?