Почему я неожиданно получаю сообщение "Заблокированная загрузка смешанного активного контента" в Firefox?

Сегодня утром, обновив браузер Firefox до последней версии (с 22 до 23), некоторые ключевые аспекты моего бэк-офиса (веб-сайта) перестали работать.

Глядя на журнал Firebug, сообщалось о следующих ошибках:

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"`

среди других ошибок, вызванных тем, что последний из двух выше не загружается.

Что означает вышеизложенное и как его разрешить?

Ответ 1

Я нашел этот пост в блоге, который прояснил некоторые вещи. Чтобы процитировать наиболее релевантный бит:

Смешанное активное содержимое теперь заблокировано по умолчанию в Firefox 23!

Что такое смешанный контент?
Когда пользователь посещает страницу, обслуживаемую через HTTP, их соединение открыто для подслушивания и атак типа "человек-в-середине" (MITM). Когда пользователь посещает страницу, обслуживаемую через HTTPS, их соединение с веб-сервером аутентифицируется и шифруется с помощью SSL и, следовательно, защищается от подслушивающих устройств и атак MITM.

Однако, если страница HTTPS включает HTTP-контент, часть HTTP может быть прочитана или изменена злоумышленниками, даже если главная страница обслуживается через HTTPS. Когда страница HTTPS имеет HTTP-контент, мы называем это содержимое "смешанным". Веб-страница, которую пользователь посещает, только частично зашифрована, так как часть содержимого извлекается без шифрования через HTTP. Блокировщик смешанного содержимого блокирует определенные HTTP-запросы на страницах HTTPS.

Разрешение в моем случае состояло в том, чтобы просто обеспечить включение jquery: (обратите внимание на удаление протокола):

<link rel="stylesheet" href="//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>

Обратите внимание, что временное "исправление" означает щелчок по значку "щит" в верхнем левом углу адресной строки и выберите "Отключить защиту на этой странице", хотя это не рекомендуется по понятным причинам.

UPDATE: Эта ссылка на страницах поддержки Firefox (Mozilla) также полезна для объяснения того, что представляет собой смешанный контент и, как указано в предыдущем параграфе, действительно предоставляет подробные сведения о том, как отображать страницу независимо:

Большинство веб-сайтов будут продолжать работать нормально без каких-либо действий с вашей стороны.

Если вам нужно разрешить отображение смешанного содержимого, вы можете сделать это легко:

Щелкните значок экрана "Смешанный контентный щит" в адресной строке и выберите "Отключить защиту на этой странице" в раскрывающемся меню.

Значок в адресной строке изменится на оранжевый предупреждающий треугольник Warning Identity Icon, чтобы напомнить вам, что отображается небезопасное содержимое.

Чтобы вернуть предыдущее действие (повторно заблокировать смешанный контент), просто перезагрузите страницу.

Ответ 2

Это означает, что вы вызываете http из https. Вы можете использовать src="//url.to/script.js" в тэге script, и он будет автоматически обнаруживать.

В качестве альтернативы вы можете использовать https в своем src, даже если вы опубликуете его на странице http. Это позволит избежать потенциальной проблемы, упомянутой в комментариях.

Ответ 3

В отсутствие функции "белого списка" вы должны выбрать "все" или "ничего". Вы можете полностью отключить блокировку смешанного контента.


Выбор ничего

Вам нужно будет навсегда отключить блокировку смешанного содержимого для текущего активного профиля.

В "Awesome Bar" введите "about: config". Если это ваш первый раз, вы получите "Это может аннулировать вашу гарантию!" сообщение.

Да, будьте осторожны. Да, вы обещаете!

Найти security.mixed_content.block_active_content. Установите значение false.


Все варианты

iDevelApp ответ потрясающий.

Ответ 4

Поместите тег <meta>, указанный ниже, в раздел <head> документа, чтобы заставить браузер заменять незащищенные соединения (http) на защищенные соединения (https). Это может решить проблему смешанного контента, если соединение может использовать https.

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

Если вы хотите заблокировать, добавьте тег ниже в тег <head> :

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

Ответ 5

Если вы используете внутреннюю службу через AJAX, убедитесь, что url указывает на https, это очистило ошибку для меня.

Исходный URL AJAX: "http://XXXXXX.com/Core.svc/" + ApiName
Исправленный URL AJAX: "https://XXXXXX.com/Core.svc/" + ApiName,

Ответ 6

Он получил ошибку из-за безопасности. для этого используйте "https", а не "http" в URL-адресе веб-сайта.

Например:

   "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

На соответствующей странице, которая делает смешанный контент https to http, который недоступен, мы можем добавить следующую запись в релевантный раздел и избавиться от ошибки смешанного контента.

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

Ответ 8

У меня была такая же проблема, потому что я купил шаблон CSS, и он схватил javascript за внешний файл javascript через http://whatever.js.com/javascript.js. Я перешел на эту страницу в своем браузере, а затем изменил ее на https://whatever..., используя SSL, и это сработало, поэтому в моем теге JavaScript javascript я просто изменил URL-адрес, чтобы использовать https вместо http, и он сработал.

Ответ 9

Чтобы принудительно перенаправить протокол https, вы также можете добавить эту директиву в .htaccess в корневой папке

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} =http

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

Ответ 10

У меня такая же проблема, когда мой сайт идет от http до https. Мы добавили правило для всего запроса перенаправления http на https.

Вам нужно добавить правило перенаправления для запроса на межсайтовый сайт, но вам нужно удалить правило перенаправления для внешних js/css.

Ответ 11

@Blender Комментарий - лучший подход. Никогда не кодируйте протокол в любом месте кода, так как его будет сложно изменить, если вы перейдете от http к https. Так как вам нужно вручную редактировать и обновлять все файлы.

Это всегда лучше, так как он автоматически определяет протокол.

src="//code.jquery.com

Ответ 12

Я обнаружил, что если у вас есть проблемы с включением или смешением вашей страницы с чем-то вроде http://www.example.com, вы можете исправить это, поставив //www.example.com вместо

Ответ 13

Если ваш сервер приложений является weblogic, убедитесь, что запись WLProxySSL ON существует (а также убедитесь, что она не должна быть прокомментирована) в файле weblogic.conf в каталоге confs веб-сервера. затем перезапустите веб-сервер, он будет работать.