Dlaczego nagle w Firefoksie pojawia się problem „Zablokowane ładowanie mieszanej zawartości aktywnej”?


350

Dziś rano, po uaktualnieniu przeglądarki Firefox do najnowszej wersji (z 22 do 23), niektóre kluczowe aspekty mojego back office (strony internetowej) przestały działać.

Przeglądając dziennik Firebug, zgłaszano następujące błędy:

Blocked loading mixed active content "http://code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css"
Blocked loading mixed active content "http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"`

wśród innych błędów spowodowanych tym, że drugi z dwóch powyższych nie został załadowany.

Co oznacza powyższe i jak to rozwiązać?


Hej, rozwiązałem tylko, wykonując: googl.com/maps with //www.googl.com/maps Działa bez blokowania zawartości
Ram Balwad

link do e-commerce nie działa (Błąd - nie można znaleźć żądanej strony)
Soleil - Mathieu Prévot

Odpowiedzi:


416

Znalazłem ten post na blogu, który wyjaśnił kilka rzeczy. Aby zacytować najbardziej odpowiedni bit:

Mieszana zawartość aktywna jest teraz domyślnie blokowana w przeglądarce Firefox 23!

Co to jest zawartość mieszana?
Gdy użytkownik odwiedza stronę obsługiwaną przez HTTP, jego połączenie jest otwarte na podsłuch i ataki typu man-in-the-middle (MITM). Gdy użytkownik odwiedza stronę obsługiwaną przez HTTPS, jego połączenie z serwerem internetowym jest uwierzytelniane i szyfrowane za pomocą protokołu SSL, a zatem zabezpieczone przed podsłuchem i atakami MITM.

Jeśli jednak strona HTTPS zawiera treść HTTP, część HTTP może zostać odczytana lub zmodyfikowana przez atakujących, nawet jeśli strona główna jest obsługiwana przez HTTPS. Gdy strona HTTPS ma treść HTTP, nazywamy ją „mieszaną”. Strona odwiedzana przez użytkownika jest tylko częściowo zaszyfrowana, ponieważ niektóre treści są pobierane niezaszyfrowane przez HTTP. Moduł mieszanej zawartości blokuje niektóre żądania HTTP na stronach HTTPS.

W moim przypadku rozwiązaniem było po prostu upewnienie się, że jquerydołączenia były następujące (zwróć uwagę na usunięcie protokołu):

<link rel="stylesheet" href="https://stackoverflow.com//code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css" type="text/css">
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"></script>

Pamiętaj, że tymczasową „poprawką” jest kliknięcie ikony „tarczy” w lewym górnym rogu paska adresu i wybranie „Wyłącz ochronę na tej stronie”, chociaż nie jest to zalecane z oczywistych powodów.

AKTUALIZACJA: Ten link ze stron wsparcia przeglądarki Firefox (Mozilla) jest również przydatny w wyjaśnieniu, co stanowi mieszaną zawartość, i jak podano w powyższym akapicie, faktycznie zawiera szczegółowe informacje na temat wyświetlania strony niezależnie od:

Większość stron internetowych będzie nadal działać normalnie bez żadnych działań z Twojej strony.

Jeśli chcesz zezwolić na wyświetlanie mieszanej zawartości, możesz to zrobić z łatwością:

Kliknij ikonę tarczy Tarcza mieszana na pasku adresu i wybierz Wyłącz ochronę na tej stronie z menu rozwijanego.

Ikona na pasku adresu zmieni kolor na pomarańczowy trójkąt ostrzegawczy Ikona tożsamości ostrzegawczej, aby przypomnieć, że wyświetlana jest niepewna treść.

Aby cofnąć poprzednią akcję (ponownie zablokować zawartość mieszaną), wystarczy ponownie załadować stronę.


82
Lepszym rozwiązaniem byłoby po prostu usunąć protokół w całości: src="//code.jquery.com.... Przeglądarka użyje protokołu, z którym strona została załadowana.
Blender

17
O stary! Zespół deweloperów FF strzelił sobie w stopę dzięki temu - fajnemu pomysłowi, zupełnie niefajnej realizacji. Brak uporczywości przy wyłączaniu stron i brak białej listy! (gdy znasz i ufasz witrynie z mieszaną zawartością)
Raad,

6
@Raad po prostu nie możesz ufać witrynie z mieszaną zawartością. Chociaż właściciele witryn mogą być niewinni, wszystkie routery obsługujące żądanie HTTP mogą nie być. Zgłosiłbym raport o błędzie do właścicieli witryn.
mysz alfa

6
@Rad i te setki, jeśli nie tysiące witryn, odsłaniają nagłówki, które mogą zawierać dane osobowe przeznaczone do zaszyfrowania za pomocą połączenia SSL ... szczerze mówiąc, nie widzę zespołu programistów FF jako nieodpowiedzialnego podmiotu w tym sprawa ...
Assimilater,

3
Niezwykle frustrujące, gdy blokuje całkowicie nieszkodliwe działania. Mówiąc o zipie! Mam wtyczkę, która używa Ziptastic do wyszukiwania miasta i stanu kodu pocztowego, który wpisujesz w formularzu adresu. Ta wtyczka jest zepsuta: wszystko, co chcę zrobić, to użyć uspokajającego API, aby złapać mały obiekt JSON - bez kości. To jest TSA bezpieczeństwa przeglądarki! Odzyskajmy spodnie, na litość boską!
Chris Baker

136

Oznacza to, że dzwonisz pod http z https. Możesz użyć src="//url.to/script.js"w tagu skryptu, który automatycznie wykryje.

Alternatywnie możesz użyć https w swoim, srcnawet jeśli będziesz publikować go na stronie http. Pozwoli to uniknąć potencjalnego problemu wspomnianego w komentarzach.


1
Notatka, jeśli zostanie użyta na stronie przechowywanej lokalnie, może spowodować, że przeglądarka bezskutecznie wyszuka skrypt, co znacznie
opóźni

52

W przypadku braku funkcji białej listy musisz dokonać wyboru „wszystko” lub „nic”. Możesz całkowicie wyłączyć blokowanie mieszanych treści.


Wybór Nic

Konieczne będzie trwałe wyłączenie blokowania mieszanych treści dla bieżącego aktywnego profilu.

W „Awesome Bar” wpisz „about: config”. Jeśli to pierwszy raz, otrzymasz „Może to unieważnić gwarancję!” wiadomość.

Tak, będziesz ostrożny. Tak, obiecujesz!

Znajdź security.mixed_content.block_active_content . Ustaw jego wartość na false .


Cały wybór

Odpowiedź iDevelApp jest niesamowita.


1
Czy wiesz, aby włączyć mieszaną zawartość w Chrome?
Faizan

1
@ Faizan: Z tej odpowiedzi : „Na pasku adresu po prawej stronie powinna znajdować się ikona„ tarczy ”, możesz ją kliknąć, aby uruchomić niezabezpieczoną treść.”
fuglede

27

Umieść poniższy <meta>znacznik w <head>sekcji dokumentu, aby wymusić na przeglądarce zamianę niezabezpieczonych połączeń (http) na połączenia zabezpieczone (https). Może to rozwiązać problem mieszanej zawartości, jeśli połączenie może korzystać z protokołu https.

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Jeśli chcesz zablokować, dodaj poniższy tag do <head>tagu:

<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">

1
Nie działa w chromie? pracował w firefox. upgrade-insecure-requestswydaje się aktualizować połączenia http tp https.
Aniket Thakur,

1
Czy to zły pomysł? Czy nie ma powodu, dla którego istnieje polityka bezpieczeństwa?
medley56


10

Podano błąd ze względu na bezpieczeństwo. w tym celu użyj adresu „https”, a nie „http” w adresie URL witryny.

Na przykład :

   "https://code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css"
   "https://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"

7

Na odpowiedniej stronie, która tworzy niedostępne połączenie HTTP https to http, możemy dodać następujący wpis w odpowiednim i pozbyć się błędu mieszanej zawartości.

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

5

Miałem ten sam problem, ponieważ kupiłem szablon CSS, który przechwycił javascript przez zewnętrzny plik javascript http://whatever.js.com/javascript.js. Poszedłem do tej strony w przeglądarce, a następnie zmieniłem ją na https://whatever...SSL i działało, więc w moim tagu javascript HTML po prostu zmieniłem adres URL do użycia httpszamiast httpi działało.


4

Aby wymusić przekierowanie na protokole https, możesz również dodać tę dyrektywę do pliku .htaccess w folderze głównym

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} =http

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

3

@Blender Comment to najlepsze podejście. Kodeks nigdy ciężko gdziekolwiek protokół w kodzie, jak to będzie trudne do zmiany, jeśli przejść od httpdohttps . Ponieważ musisz ręcznie edytować i aktualizować wszystkie pliki.

Jest to zawsze lepsze, ponieważ automatycznie wykrywa protokół.

src="//code.jquery.com

2

Odkryłem, że jeśli masz problemy z włączeniem lub pomieszaniem strony z czymś takim jak http : //www.example.com, możesz to naprawić, wstawiając // www .example.com zamiast tego


to zadziałało dla mnie, dzięki. Czy możesz mi wyjaśnić, co się dzieje?
Mantej Singh

2

Mam ten sam problem, gdy moja witryna przechodzi z http do https. Dodaliśmy regułę dla wszystkich żądań przekierowania http na https.

Musisz dodać regułę przekierowania dla żądania między lokacjami, ale musisz usunąć regułę przekierowania dla zewnętrznego js / css.


0

Właśnie rozwiązałem ten problem, dodając następujący kod w nagłówku:

    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

-9

Jeśli serwer aplikacji jest weblogic, upewnij się, że istnieje wpis WLProxySSL ON (i upewnij się, że nie powinien być komentowany) w pliku weblogic.conf w katalogu conf serwera WWW. następnie uruchom ponownie serwer WWW, będzie działać.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.