Чому у мене несподівано виникає проблема "Заблоковано завантаження змішаного активного вмісту" у Firefox?


350

Сьогодні вранці, оновивши браузер 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"`

серед інших помилок, спричинених тим, що останні з двох вище не завантажуються.

Що означає вищезазначене і як це можна вирішити?


Привіт, я вирішив лише: googl.com/maps з //www.googl.com/maps Це працюватиме без блокування вмісту
Ram Balwad

посилання електронної комерції мертве (Помилка. Сторінку, яку ви запитували, не вдалося знайти)
Soleil - Mathieu Prévot

Відповіді:


417

Я знайшов цю публікацію в блозі, яка прояснила кілька речей. Процитуйте найбільш релевантний біт:

Змішаний активний вміст тепер заблоковано за замовчуванням у Firefox 23!

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

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

У моєму випадку резолюція полягала в тому, щоб просто переконатися, що jqueryвключення було таким (зверніть увагу на видалення протоколу):

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

Зауважте, що тимчасове "виправлення" - це натиснути на значок "щит" у верхньому лівому куті адресного рядка та вибрати "Вимкнути захист на цій сторінці", хоча це не рекомендується з зрозумілих причин.

ОНОВЛЕННЯ: Це посилання зі сторінок підтримки Firefox (Mozilla) також корисне для пояснення того, що становить змішаний вміст, і, як зазначено у вищевказаному абзаці, насправді надається детальна інформація про відображення сторінки незалежно від:

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

Якщо вам потрібно дозволити показ змішаного вмісту, ви можете це легко зробити:

Клацніть на піктограмі екрана Змішаний вміст щита в адресному рядку та виберіть Відключити захист на цій сторінці зі спадного меню.

Піктограма в адресному рядку зміниться на помаранчевий трикутник попереджувальної іконки попередження, щоб нагадати, що відображається незахищений вміст.

Щоб відновити попередню дію (повторно заблокувати змішаний вміст), просто перезавантажте сторінку.


82
Краще було б просто видалити протокол повністю: src="//code.jquery.com.... Веб-браузер використовуватиме протокол, з яким завантажена сторінка.
Блендер

17
О людино! Команда FF Dev вдарила собі в ногу - чудова ідея, абсолютно неприхована реалізація. Ніякої наполегливості для відключення сторінок і жодного списку! (бо коли ви знаєте і довіряєте сайту зі змішаним вмістом)
Raad

6
@Raad ви просто не можете довіряти сайту зі змішаним вмістом. Хоча власники сайтів можуть бути невинними, всі маршрутизатори, що несуть http-запит, можуть не бути. Я б подав звіт про помилку власникам сайтів.
альфа-миша

6
@Raad та ті сотні, якщо не тисячі сайтів, перебувають у заголовку, який може містити особисту інформацію, яка може бути зашифрована за допомогою SSL-з'єднання ... відверто кажучи, я не бачу Команду розробників FF як невідповідальну суть у цьому матерія ...
Асимілятор

3
Надзвичайно засмучує, коли це блокує абсолютно нешкідливі дії. Якщо говорити про блискавку! У мене є плагін, який використовує Ziptastic для пошуку міста та штату поштового індексу, який ви вводите у форму адреси. Цей плагін зламаний: все, що я хочу зробити, це використовувати спокійний API, щоб схопити крихітний об’єкт JSON - без кісток. Це TSA безпеки браузера! Давайте нам штани, задля лайно!
Кріс Бейкер

137

Це означає, що ви телефонуєте http з https. Ви можете використовувати src="//url.to/script.js"тег сценарію, і він автоматично виявить.

Крім того, ви можете використовувати https у своїй, srcнавіть якщо ви будете публікувати його на http-сторінці. Це дозволить уникнути потенційного питання, згаданого в коментарях.


1
Лише зауваження, якщо він використовується на локально збереженій веб-сторінці, це може змусити браузер безрезультатно шукати сценарій, що значно затримує завантаження сторінки
binaryfunt

52

За відсутності функції білого списку ви повинні зробити вибір "все" або "нічого". Ви можете повністю відключити блокування змішаного вмісту.


Нічого вибору

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

У "Awesome Bar" введіть "about: config". Якщо це ваш перший раз, ви отримаєте "Це може втратити гарантію!" повідомлення.

Так, ви будете обережні. Так, ви обіцяєте!

Знайдіть security.mixed_content.block_active_content . Встановіть значення значення false .


Всі вибори

Відповідь iDevelApp є приголомшливою.


1
Чи знаєте ви ввімкнути змішаний вміст на хромі?
Файзан

1
@Faizan: З цієї відповіді : "У адресному рядку праворуч має бути значок" щита ", ви можете натиснути на нього, щоб запустити незахищений вміст."
фугледе

27

Помістіть нижче <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">

1
Не працює в хромі? працював у firefox. upgrade-insecure-requestsздається, оновити http tp https-дзвінки.
Анікет Такур

1
Це погана ідея? Чи не існує причини, що існує політика безпеки?
medley56


10

Його з огляду на помилку через безпеку. для цього будь ласка, використовуйте "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 до http-дзвінка, який недоступний, ми можемо додати наступний запис у відповідній та позбутися помилки змішаного вмісту.

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

5

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


4

Щоб примусити перенаправлення на протокол https, ви також можете додати цю директиву в .htaccess у кореневій папці

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} =http

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

3

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

Це завжди краще, оскільки воно автоматично визначає протокол.

src="//code.jquery.com

2

Я виявив, що у вас є проблеми з включенням або змішуванням вашої сторінки з чимось на зразок http : //www.example.com, ви можете виправити це, замість цього // www .example.com


це працювало для мене, дякую. Чи можете ви пояснити мені, що відбувається?
Мантей Сінгх

2

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

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


0

Я просто вирішив цю проблему, додавши в заголовку наступний код:

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

-9

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.