2015-10-01 2 views
27

после обновления до Safari 9 Я получаю эту ошибку в браузере:Safari 9 запретил запуск небезопасного контента?

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

Любые знает, как включить ход незащищенного контента на новом Safari?

+0

btw, чтобы обойти это, мы в настоящее время обслуживаем все активы через https. но не должно ли Safari разрешать использование смешанного контента? нет? – Staelen

+4

Это очень неприятно. Есть законные причины, по которым необходимо, чтобы страница https загружала что-то (например, RPC или локальная служба). Apple не должна отключать поведение без возможности вернуть его. –

+0

На самом деле это разумная мера предосторожности со стороны яблока. Предоставляя смешанный контент, кто-то может вводить вредоносный код или snoop в сеанс (если он был динамическим).Если вы беспокоитесь об эффективности использования SSL/TLS, просто добавьте поддержку HTTP/2 на ваш сервер. Тесты показывают значительное улучшение производительности, которое делает его так же быстро, как HTTP/1.1, когда вы получаете много активов или ajax из одного домена. –

ответ

3

В соответствии с Apple support forums Safari не позволяет отключить блок на смешанном контенте.

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

В качестве решения для вас вы можете либо модернизировать HTTP-соединение с HTTPS (что, кажется, вы сделали), либо прокси-контент вашего контента через HTTPS-соединение с помощью службы HTTPS (или, в вашем случае, порта).

+0

Проблема в том, что некоторые службы перестают работать (геолокация), если ваш сайт HTTPS ссылается на один HTTP-образ или другой небезопасный ресурс. Это просто сделало Safari 9 непригодным для использования – Jamgold

+0

@ Jamgold для отключения контента смешанного контента или HTTP, даже если это просто изображение, это хорошая идея со стороны Apple. Поскольку Safari не знает, что сайт намеревается делать с небезопасным контентом, а злоумышленник сетевого уровня способен манипулировать небезопасным контентом, позволяя любому небезопасному контенту потенциально подвергать риску информацию пользователя, предоставляемую через службы. – winhowes

+0

, как уже указывали другие пользователи, иногда вы не можете исправить веб-сервер, с которого приходит HTML, и иногда у вас есть веб-сервер HTTPS с контентом (изображениями), связанным с другими сайтами (по-моему, оригинальная концепция Интернета) и в течение ночи Safari сломал все это – Jamgold

1

Вы можете исправить проблему HTTPS, используя HTTPS локально с самоподписанным сертификатом SSL. Heroku has a great how-to article about generating one.

После настройки SSL на всех серверах разработки вы по-прежнему получите ошибку при загрузке ресурса в Safari, поскольку используется ненадежный сертификат (самоподписанные SSL-сертификаты по умолчанию не проверяются браузерами, поскольку они не могут быть проверены с доверенным органом). Чтобы исправить это, вы можете загрузить проблемный URL-адрес на новой вкладке в Safari, и браузер предложит вам разрешить доступ. Если вы нажмете «Показать сертификат» в приглашении, в окне сведений о сертификатах появится флажок «Всегда разрешать контент с локального хоста». Проверяя это, прежде чем разрешить доступ, вы сохраните настройку в Safari в будущем. После разрешения доступа просто перезагрузите страницу, изначально проявляющую проблему, и вам должно быть хорошо идти.

Это действительный пример использования в качестве разработчика, но, пожалуйста, убедитесь, что вы полностью понимаете последствия и риски безопасности, которые вы добавляете в свою систему, внеся это изменение!

0

Если как я у вас есть

  • интерфейс на port1
  • бэкенд на port2b
  • хотите загрузить скрипт http://localhost:port1/app.js из http://localhost:port2/backendPage

Я нашел простой обходной путь: просто перенаправить с ответом http все http://localhost:port2/localFrontend/*path до http://localhost:port1/*path с вашего b Конфигурация сервера ackend.

Тогда вы можете загрузить свой скрипт непосредственно с http://localhost:port2/localFrontend/app.js вместо прямого URL-адреса. (или вы можете настроить базовый URL-адрес для всех ваших ресурсов)

Таким образом, Safari сможет загружать контент из другого домена/порта без какой-либо установки https.

Смежные вопросы