Почему у меня внезапно возникает проблема "Заблокированная загрузка смешанного активного контента" в 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"`

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

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

17 ответов

Решение

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

Смешанный активный контент теперь заблокирован по умолчанию в 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>

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

ОБНОВЛЕНИЕ: Эта ссылка со страниц поддержки Firefox (Mozilla) также полезна для объяснения того, что представляет собой смешанный контент, и, как указано в предыдущем абзаце, действительно предоставляет подробные сведения о том, как отображать страницу независимо от:

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

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

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

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

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

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

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

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


Ничего Выбор

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

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

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

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


Весь выбор

Appulus потрясающий.

Если вы хотите разрешить запрос смешанного содержимого, добавьте тег ниже <head> тег.

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

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

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

Это дало ошибку из-за безопасности. для этого, пожалуйста, используйте "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"

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

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

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

Начальный URL AJAX: " http://xxxxxx.com/Core.svc/" + ApiName
Исправленный URL-адрес AJAX: " https://xxxxxx.com/Core.svc/" + ApiName,

Простое изменение HTTP на HTTPS решило эту проблему для меня.

НЕПРАВИЛЬНЫЙ :

      <script src="http://code.jquery.com/jquery-3.5.1.js"></script>

ВЕРНЫЙ :

      <script src="https://code.jquery.com/jquery-3.5.1.js"></script>

Мне удалось исправить это, используя эти:

Для пользователя Firefox

  1. Откройте новую вкладку, введите about:configв адресной строке, чтобы перейти на страницу конфигурации.
  2. Ищи security.mixed_content.block_active_content
  3. Изменять TRUEк FALSE.

Для пользователя Chrome

  1. Нажмите на Not Secure Warningрядом с URL-адресом

  2. Нажмите Site Settingsво всплывающем окне

  3. Изменять Insecure Contentк Allow

  4. Закройте и обновите страницу

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

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

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

src="//code.jquery.com

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

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} =http

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

Я исправил эту проблему, добавив в заголовок следующий код:

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

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

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

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

      @if (env('APP_DEBUG'))
        <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
@endif

Синтаксис для Laravel Blade. Не забудьте использовать его только для отладки, чтобы избежать MITM-атак и прослушивания.

Также используя

      http -> https

для Ajax или обычных сценариев JS или CSS также решит проблему.

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

Другие вопросы по тегам