2012-09-15 16 views
7

Zauważam w PHP manual który stwierdza, co następuje:użyciu protokołu względne URI wewnątrz „Lokalizacja:” nagłówki

HTTP/1.1 wymaga bezwzględnego URI jako argument »Położenie: w tym schemat, nazwę hosta i ścieżka bezwzględna, ale niektórzy klienci akceptują względne identyfikatory URI.

Aby ułatwić użytkownikom z preferencją dla HTTPS everywhere związku, myślę o zmianie nagłówków w moich skryptów PHP z:

header("Location: http://www.example.com/"); do header("Location: //www.example.com/");

Ja testowałem powyższy kod do pracy na moja przeglądarka firefox, ale nie jestem pewien, czy jest to wskazane. Czy należy wyodrębnić protokół z $_SERVER zmiennej i umieścić go w.

+1

możliwe duplikat [Czy przekierowanie 302 do względnej zawartości ważny lub nieważny?] (Http://stackoverflow.com/questions/8250259/is-a-302-przekierowanie-do-względnego-url-valid-or-invalid) – Raedwald

Odpowiedz

2

Jak sugeruje HTTP protocol, należy użyć bezwzględny URI. Nadal można wykryć protokołu, za pomocą $_SERVER['HTTPS'] zmiennej warunku jak:

 
$protocol = "http" . (!empty($_SERVER['HTTPS']) ? "s" : ""); 
+1

Należy pamiętać, że podczas korzystania z ISAPI z usługami IIS wartość będzie "wyłączona", jeśli żądanie nie zostało wysłane za pośrednictwem protokołu HTTPS protokół. (Takie samo zachowanie zostało zgłoszone dla IIS7 z uruchomionym PHP jako aplikacją Fast-CGI). – mikiqex

+1

Nie będzie działać, jeśli aplikacja działa w trybie HTTP i działa za odwrotnym proxy, które używa protokołu HTTPS. –

7

HTTPbis update umożliwia względne URI. Chociaż nie wspomniano o tym konkretnie, obejmuje to adresy URL zależne od protokołu.

(Jest to przede wszystkim aktualizacja do HTTP/1.1 specyfikacji, że dokumenty powstałe zachowanie przeglądarki.)

+0

Jest to przydatne. Dzięki. HTTP/1.1 był tu przez bardzo długi czas. Czy mogę powiedzieć, że takie zachowanie jest już egzekwowane przez większość nowoczesnych przeglądarek? –

+1

Myślę, że to bardzo ważne, aby zaznaczyć, że dokument, z którym się łączysz jest (nawet teraz) tylko wersją roboczą! Nie zostanie przekazany do IESG do rozpatrzenia jako standard do września bieżącego roku. W każdym razie, to, co jest najważniejsze dla OP, nie jest tym, co mówi spec, ale jak przeglądarki zachowują się w rzeczywistości. –

Powiązane problemy