Odsyłacz jest przekazywany z HTTPS na HTTP w niektórych przypadkach… Jak?

17

Teoretycznie przeglądarki nie przekazują informacji o stronie odsyłającej z HTTPS do stron HTTP. Z mojego doświadczenia wynika, że ​​zawsze tak było. Ale właśnie znalazłem wyjątek i chcę zrozumieć, dlaczego to działa, więc mogę go również użyć.

Wyszukaj „what is my referer” na https://www.google.ca/
np .: https://www.google.ca/search?q=what+is+my+referer

Istnieje kilka witryn, które wyświetlają odsyłacz. Wszyscy wydają się „pracować”, kiedy nie powinni. Na przykład kliknij stronę www.whatismyreferer.com. Dostaję:

 Your referer:
 https://www.google.ca/

Zauważ, że czasami rzadko otrzymuję „brak referencji”. Wróć i kliknij ponownie link, a następnym razem „zadziała”.

To nie powinno się zdarzyć. www.whatismyreferer.com jest witryną inną niż HTTPS. Nagłówek strony odsyłającej nie powinien być przekazywany, ale tak jest.

Co się tutaj dzieje i jak mogę zrobić to samo z mojej witryny HTTPS i stron HTTP, do których prowadzę link?

ravisorg
źródło
1
Powinienem zauważyć, że używam Chrome w systemie Windows, jeśli to robi jakąkolwiek różnicę (np .: jeśli inne osoby widzą różne wyniki w różnych przeglądarkach / systemach operacyjnych)
ravisorg
To zachowanie nie jest już prawdą.
Flimm
@ravisorg, czy nie należy tego umieszczać w S / O?
Pacerier
Google zwraca teraz link HTTPS, więc test nie jest już ważny :-(
Silas S. Brown

Odpowiedzi:

4

To jest standardowe zachowanie.

https://tools.ietf.org/html/rfc2616#section-15.1.3 mówi

Klienci NIE POWINNI zawierać pola nagłówka odsyłacza w (niezabezpieczonym) żądaniu HTTP, jeśli strona odsyłająca została przesłana za pomocą bezpiecznego protokołu.

więc jeśli twój klient to robi, narusza to standard.

potem Google jest standardem i mogą robić, co chcą :-)

johnshen64
źródło
1
„Czy” powinno być opcjonalne, prawda?
Pacerier
tak, tak myślę, opcjonalnie.
johnshen64
4
Ponieważ jest to opcjonalne, dlaczego uważasz, że narusza standard?
Pacerier,
1
Do tej pory 2616 jest przestarzały. 7231 Sekcja 5.5.2 mówi „Agent użytkownika NIE MOŻE wysłać pola nagłówka odsyłacza w niezabezpieczonym żądaniu HTTP, jeśli strona odsyłająca została odebrana z bezpiecznym protokołem”. Nie określa jednak, co agenci mają robić w przypadku zabezpieczonych żądań HTTP.
Peter
1

Wygląda na to, że robi to javascript na stronie Google. Nie widzę tego w Firefoksie z włączonym noscript i przestanę go widzieć w Chrome w systemie Windows, jeśli wyłączę javascript. Nie wiem co konkretnie, bo nie kopałem głębiej.

Etan Reisner
źródło
Nie, to nie jest związane z javascript (pomyślałem o tym i sprawdziłem to przed pytaniem). Wygląda na to, że jest to nowy tag <meta>, który śledzi Chrome.
ravisorg
Niezawodne wyłączenie javascript uniemożliwia stronie polecającej działanie tutaj. Nie wiem Może dotyczy to więcej niż jednej rzeczy.
Etan Reisner,
To bardzo interesujące - zamierzam z tym więcej eksperymentować. Dziękujemy za opinię!
ravisorg
0

<meta> Nazwa atrybutu etykiety ma nowe reguły stron odsyłających, strona odsyłająca kontrolująca zawartość nagłówka HTTP odsyłacza HTTP dołączonego do każdego żądania wysłanego z tego dokumentu.

Aby uzyskać więcej informacji, sprawdź tutaj: Zasady polecające RFC

leozhang2018
źródło
To jest to samo, co już zaakceptowana odpowiedź ?!
DocRoot
-2

Dzieje się tak dlatego, że po kliknięciu linku następuje przekierowanie z https://www.google .... do http://www.google ... następnie następuje przekierowanie do www.whatismyreferer.com

I tak jak powiedziałeś, między stronami http przekazywany jest odnośnik.

Możesz to sprawdzić za pomocą rozszerzenia Firefox

użytkownik2299634
źródło
2
Zgadujesz, czy opierasz się na faktach? Ponieważ nie widzę tego po mojej stronie. Kliknięcie linku powoduje przejście do przekierowania HTTPS na google.ca, a następnie do domeny końcowej. Nigdy nie trafiłem na adres URL inny niż https, dopóki nie dotrę (np.) Do www.whatismyreferer.com. Pamiętaj też, że osoba odsyłająca wyraźnie wskazuje httpS://www.google.ca , a nie http.
ravisorg
Tak, ta odpowiedź wydaje się nieprawidłowa.
ceejayoz
Oto zrzut nagłówków http: pastebin.com/Y1HJyJ87 Właśnie usunąłem pobieranie zasobów (takich jak Google Suggest i inne rzeczy ajax) i dane związane z plikami cookie. Ale muszę przyznać, że kiedy próbowałem wiele razy, Google zachowywał się inaczej ... Czasami używając tylko https, dlatego nie zezwala stronie internetowej na pokazanie mi mojego odnośnika. Po prostu spróbuj sam
user2299634