Licznik na stronie HTTPS
Strona działa na HTTPS, a odwiedzający widzą kłódkę. Potem dochodzi wklejony fragment z innej strony i kłódka znika – albo wklejony element po prostu się nie pojawia.
To tak zwana mieszana zawartość (mixed content) i warto poświęcić dziesięć minut na jej zrozumienie, bo po cichu psuje mnóstwo starych osadzonych widżetów.
Co robią z tym przeglądarki
Strona wczytana przez HTTPS nie ma prawa po cichu pobierać swoich fragmentów przez zwykłe HTTP. Podsłuchujący, który potrafi zmienić nieszyfrowane żądanie obrazka, może zmienić to, co widzą odwiedzający, więc przeglądarka nie pozwala na mieszanie tych dwóch protokołów.
W przypadku obrazków i skryptów nowoczesne przeglądarki albo same podnoszą żądanie do HTTPS, albo blokują je całkowicie. To, który z tych dwóch scenariuszy nastąpi, zależy od przeglądarki i rodzaju zasobu, a na żaden z nich nie warto liczyć.
Sytuacja w Stats4U
Załatwione, w dwóch miejscach. Skrypt ma adres punktu zliczającego zapisany na stałe jako HTTPS, więc każde żądanie, które wysyła, jest szyfrowane niezależnie od tego, jak została podana sama strona, która go wczytała. A serwer odpowiada na zwykłe HTTP stałym przekierowaniem na HTTPS – sprawdzone podczas pisania tego tekstu, zarówno dla skryptu, jak i dla samego obrazka licznika.
Licznik osadzony bieżącym fragmentem kodu nie zepsuje więc kłódki i nie ma nic, co trzeba by ustawiać.
Jeden przypadek, który wciąż może dać się we znaki
Jeśli ktoś kiedyś skopiował skrypt licznika wprost na stronę zamiast go zlinkować – co było powszechnym zwyczajem, a niektóre strony robią tak do dziś – to działa tam zamrożona kopia z tamtego momentu. Wystarczająco stara kopia ma w sobie zwykły adres HTTP, do którego żadna poprawka po naszej stronie nie dotrze.
Dwie minuty na sprawdzenie: w źródle strony wystarczy wyszukać http:// po którym następuje nasza domena. Znaleziony fragment zastępuje się w całości aktualnym kodem ze strony statystyk.
Przy tej okazji warto w ogóle zlinkować skrypt zamiast hostować jego kopię. Jest osobny wpis o tym, dlaczego, a dotyczy to znacznie więcej niż tylko liczników.