W sieci pojawia się coraz więcej stron chronionych certyfikatem SSL. I niby wszystko jest proste. Wykupujemy certyfikat, instalujemy dla wybranej domeny (jak mamy serwer wykupiony w jakiejś firmie, to w instalacji certyfikatu zazwyczaj wyręczy nas ta firma) i ewentualnie wymuszamy by wszystkie adresy zaczynały się od https:// Można to zrobić choćby przy pomocy mode-rewrite w pliku .htaccess
RewriteCond %{HTTPS} !=on RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
I wszystko byłoby pięknie. Sam właśnie niedawno budowałem jeden taki portal. Dużą niespodzianką był dla mnie jego wygląd w przeglądarkach… Zgadnijcie… Internet Explorer. Wszystkie zasoby spoza domeny z SSL nie były przez przeglądarkę ani interpretowane (plik css dostosowujący znaczniki HTML 5 do IE), ani wyświetlane (podlinkowane grafiki i filmy z YouTube.)
Dlaczego IE ma problemy z SSL?
No może nie tyle IE ma problemy z SSL, co twórcy stron mogą mieć problemy z IE . Tym przeglądarkom nie podoba się, że na stronie chronionej przez SSL znajdują się adresy do zasobów w ten sposób nie chronionych. Można wprawdzie w przeglądarce zaznaczyć odpowiednią opcję i wszystko będzie śmigać jak wiedźma na miotle, ale nie możemy przecież napisać przy każdym zewnętrznym zasobie na stronie:
„Nie widzisz tego filmu? Musisz pogrzebać w ustawieniach swojej przeglądarki. Uwaga! To może okazać się trudniejsze od grzebania w uchu.”
Jak przechytrzyć IE – rozwiązanie
Rozwiązanie jest proste do tego stopnie, że nie jestem pewien czy powinienem o tym pisać? Dla porządku jednak doprowadzę sprawę do końca. Wystarczy zmienić protokół we wszystkich zewnętrznych linkach z http: na https:. Jeżeli mamy gdzieś adres http://www.strona.pl/biala-plama.png, zamieniamy na https://www.strona.pl/biala-plama.png. Przecinek i kropka na końcach adresów wynikają z interpunkcji poprzedniego zdania i nie są częścią adresów
Epilog
I znowu myśl ludzka okazała się potężniejsza od Internet Explorera.