2009-09-09 13 views
22

Ich möchte wissen, ob 301 Redirect immer Referrer beibehalten.Bleibt 301 Redirect immer Referrer?

Ich mache eine Seite namens "gotourig_https.html", die einen Hyperlink zu einer Seite "orig_https.asp" enthält.
"orig_https.asp" wird 301 auf "dest.html" umleiten, was den document.referrer anzeigt.

In diesem Fall

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 

ich auch eine Seite machen namens "gotoorig_http.html", die einen Hyperlink zu einer Seite "orig_http.asp" enthält. "orig_http.asp" wird 301 zu "dest.html" umleiten, das den document.referrer anzeigt.

In diesem Fall

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. 

Warum passiert das letzte Fall ist?

Antwort

26

RFC gibt kein Verweis-spezifisches Verhalten in Status-301-Definition, noch 301-spezifisches Verhalten in Referer Header-Definition. Daher muss ich sagen, dass dieses Referrer-Preserving-Verhalten zwar logisch ist, aber im RFC nicht definiert ist und Sie daher nie sicher sein können.

+0

+1 gewechselt wird, weil sie sich nicht auf dieses Verhalten verlassen. Schiedsrichter können auch gefälscht werden! – sybreon

-2

Über https senden die Browser REFERRERS nicht. Dies ist in der RFC.

+4

Nicht wahr. Zwischen HTTPS-Seiten gibt es in der Spezifikation nichts über Referer-Header, aber die Spezifikation sagt, dass sie nicht gesendet werden sollten, wenn zwischen HTTP und HTTPS – blowdart

11

Wenn zwischen HTTP und HTTPS gewechselt wird, besagt die HTTP-Spezifikation, dass ein Referer-Header NICHT gesendet werden sollte (siehe 15.1.3 in RFC2616). Die Spezifikation sagt jedoch nicht, was zwischen HTTPS-Seiten passieren soll.

Interessanterweise ignoriert Firefox in diesem Fall die Spezifikation, kann aber durch Einstellen der Konfigurationseinstellung network.http.sendSecureXSiteReferrer dazu gebracht werden, sich anzupassen.