2009-09-09 15 views
22

Chcę wiedzieć, czy przekierowanie 301 zawsze zachowuje stronę odsyłającą.Czy przekierowanie 301 zawsze zachowuje stronę odsyłającą?

Wykonuję stronę o nazwie "gotoorig_https.html", która zawiera hiperłącze do strony "orig_https.asp".
"orig_https.asp" spowoduje 301 przekierowanie do "dest.html", które pokazuje document.referrer.

W tym przypadku

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 

ja również zrobić stronę o nazwie „gotoorig_http.html”, który zawiera hiperłącze do strony „orig_http.asp”. "orig_http.asp" spowoduje 301 przekierowanie do "dest.html", które pokazuje document.referrer.

W tym przypadku

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. 

Dlaczego ostatni przypadek zdarzyć?

Odpowiedz

26

RFC nie określa żadnego zachowania specyficznego dla strony odsyłającej w definicji stanu 301 ani zachowania specyficznego dla 301 w definicji nagłówka Referer. W związku z tym muszę powiedzieć, że chociaż zachowanie zachowujące stronę kierującą jest logiczne, nie jest zdefiniowane w RFC i dlatego nigdy nie można być pewnym.

+0

+1, aby nie polegać na wspomnianym zachowaniu. Odnośniki też mogą być fałszywe! – sybreon

-2

Przez HTTPS przeglądarki nie wysyłają REFERRERÓW. To jest w RFC.

+4

Nieprawda. Między stronami HTTPS nie ma nic w specyfikacji o nagłówkach referer, ale specyfikacja mówi, że nie powinny być wysyłane podczas przełączania między HTTP a HTTPS – blowdart

11

Podczas przechodzenia między protokołami HTTP i HTTPS specyfikacja HTTP mówi, że nagłówka referer NIE powinien być wysyłany (patrz 15.1.3 w RFC2616). Specyfikacja nie określa jednak, co powinno się stać między stronami HTTPS.

Co ciekawe, Firefox domyślnie ignoruje specyfikację w tym przypadku, ale można go dostosować, ustawiając ustawienia konfiguracji network.http.sendSecureXSiteReferrer.

Powiązane problemy