2015-10-01 11 views
27

po uaktualnieniu do Safari 9 dostaję ten błąd w przeglądarce:Safari 9 nie zezwalała na uruchamianie niezabezpieczonych treści?

[Warning] [blocked] The page at https://localhost:8443/login was not allowed to run insecure content from http://localhost:8080/assets/static/script.js. 

Ktoś wie jak włączyć bieg niepewnego zawartości na nowym Safari?

+0

Przy okazji, w celu obejścia tego problemu obecnie obsługujemy wszystkie zasoby za pośrednictwem https. ale czy Safari nie powinno pozwalać na włączanie mieszanych treści? Nie? – Staelen

+4

To jest bardzo frustrujące. Istnieją uzasadnione powody, aby mieć stronę https, która ładuje coś (np. RPC lub usługę lokalną). Apple nie powinno wyłączać zachowania bez możliwości odzyskania go. –

+0

W rzeczywistości jest to uzasadnione zabezpieczenie na części Apple. Po zezwoleniu na mieszane treści ktoś może wstrzyknąć złośliwy kod lub podsłuchać sesję (jeśli była dynamiczna).Jeśli obawiasz się wpływu wydajności używania SSL/TLS, po prostu dodaj obsługę HTTP/2 do swojego serwera. Testy porównawcze pokazują ogromną poprawę wydajności, która sprawia, że ​​jest tak szybki jak HTTP/1.1 podczas pobierania wielu zasobów lub ajax z tej samej domeny. –

Odpowiedz

3

Zgodnie z Apple support forums Safari nie pozwala na wyłączenie bloku dla treści mieszanych.

Chociaż jest to frustrujące dla użyteczności w uzasadnionych przypadkach, takich jak twój, wydaje się, że jest to część ich wysiłków, aby zmusić bezpieczną treść do dostarczania/udostępniania najlepszych praktyk.

Jako rozwiązanie dla Ciebie możesz albo zaktualizować połączenie HTTP do HTTPS (co, jak się wydaje, zrobiłeś), albo zaimportować zawartość za pomocą połączenia HTTPS z usługą obsługującą HTTPS (lub, w twoim przypadku, z portem).

+0

Problem polega na tym, że niektóre usługi przestają działać (geolokalizacja), jeśli witryna HTTPS łączy się z pojedynczym obrazem HTTP lub innym niezabezpieczonym zasobem. To właśnie spowodowało, że Safari 9 nieużywalne – Jamgold

+0

@Jamgold wyłączenie usług dla treści mieszanych lub treści HTTP, nawet jeśli jest to tylko obraz jest dobrym pomysłem ze strony Apple. Ponieważ Safari nie wie, co witryna ma zamiar zrobić z niezabezpieczoną treścią, a osoba atakująca na poziomie sieci może manipulować niebezpiecznymi treściami, pozwalając, aby każda niezabezpieczona zawartość mogła potencjalnie zagrozić bezpieczeństwu informacji użytkownika udostępnianych za pośrednictwem usług. – winhowes

+0

, jak zauważyli już inni użytkownicy, czasami nie można naprawić serwera WWW, z którego pochodzi kod HTML, i innym razem, gdy masz serwer WWW HTTPS z treścią (obrazami) połączonymi z innych stron (jak mi się wydaje, pierwotnej koncepcji sieci) i przez całą noc Safari zerwał wszystkie te atuty – Jamgold

1

Możesz naprawić problem HTTPS, używając lokalnego protokołu HTTPS z samopodpisanym certyfikatem SSL. Heroku has a great how-to article about generating one.

Po skonfigurowaniu protokołu SSL na wszystkich serwerach programistycznych nadal będzie występował błąd podczas ładowania zasobu w przeglądarce Safari, ponieważ używany jest niezaufany certyfikat (certyfikaty SSL z podpisem własnym nie są domyślnie zaufane przez przeglądarki, ponieważ nie można ich zweryfikować z zaufanym organem). Aby to naprawić, możesz załadować problematyczny adres URL w nowej karcie w Safari, a przeglądarka poprosi o zezwolenie na dostęp. Jeśli klikniesz "Pokaż certyfikat" w monicie, w widoku szczegółów certyfikatu pojawi się pole wyboru "Zawsze zezwalaj na zawartość z hosta lokalnego". Zaznaczenie tego przed zezwoleniem na dostęp zapisze ustawienia w Safari na przyszłość. Po zezwoleniu na dostęp wystarczy przeładować stronę, na której pierwotnie występuje problem, i powinieneś być gotowy.

Jest to przydatny przypadek użycia jako programista, ale upewnij się, że w pełni rozumiesz wpływ na bezpieczeństwo i ryzyko, które dodajesz do systemu, wprowadzając tę ​​zmianę!

0

Jeśli tak jak ja masz

  • nakładka na port1
  • backend na port2b
  • chcesz załadować skrypt http://localhost:port1/app.js z http://localhost:port2/backendPage

znalazłem łatwe obejście: wystarczy przekierować z odpowiedzią http wszystkie http://localhost:port2/localFrontend/*path na http://localhost:port1/*path ze swojego b potwierdzenie konfiguracji serwera.

Następnie można załadować skrypt bezpośrednio z adresu http://localhost:port2/localFrontend/app.js zamiast bezpośredniego adresu URL interfejsu. (lub możesz skonfigurować podstawowy adres URL dla wszystkich swoich zasobów)

W ten sposób Safari będzie mogło ładować zawartość z innej domeny/portu bez potrzeby konfigurowania https.

Powiązane problemy