Я пытаюсь включить HTTPS на своем веб-сайте и сталкиваюсь с проблемой, когда веб-страница https импортирует js/css/fonts/etc из расположений https, но браузер видит некоторые (не все) из них как http ссылки.
См. пример на JSFiddle:
<html>
<head>
<!-- This loads correctly as HTTPS content -->
<script type="text/javascript" src="//code.jquery.com/jquery-3.3.1.min.js"></script>
<!-- This is blocked by the browser as Mixed Active Content, even though the page scheme is https -->
<script type="text/javascript" src="//highcharts.com/highslide/highslide-full.min.js"></script>
<!-- Explicitly setting `https` does not change the result -- it still considers this `http` -->
<script type="text/javascript" src="https://highcharts.com/highslide/highslide-full.min.js"></script>
</head>
<body>
<p>Lorem ipsum</p>
</body>
</html>
Что здесь происходит? Проблема в источнике? Почему кажется, что браузер произвольно заменяет https на http? Он тянет из своего кеша? (Я пытался использовать Ctrl-F5; есть ли лучший способ исключить это? Почему бы ему также не кэшировать JQuery таким же образом?)
Похоже, это тот же вопрос, что и https://stackoverflow.com/questions/32307235/how-to-fix-blocked-loading-mixed-active-content-for-css-and-js-over-https, но принятое там решение не помогло. Трудно найти другие связанные вопросы, потому что все, что я вижу, кажется, просто объясняет супер-базовый смешанный активный контент, что вы не можете использовать и http, и https на одной странице, что я уже понимаю.
https://www.highcharts.com/highslide/highslide-full.min.js
. Причина, по которой вы сталкиваетесь с этой проблемой смешанного содержимого, заключается в том, что даже если вы можете перейти к highcharts.com/highslide/highslide-full.min.js URL, как и ожидалось, если вы вставляете этот URL в адресную строку браузера —highcharts.com
веб-сервер по какой-то причине отвечает на запросы вашего кода для этогоhttps
URL с перенаправление 301 на (не-4_) URL-адресhttp://highcharts.com/highslide/highslide-full.min.js
. - person sideshowbarker   schedule 16.04.2018highcharts.com
сервере, используяcurl
: curl -I highcharts.com /highslide/highslide-full.min.js Я не знаю, почему этот сервер отвечает на запросы таким образом, когда он этого не делает, если вы переходите по URL-адресу непосредственно в браузере, но это не так. если вы делаете тот же запрос, но вместо этого используете имя хостаwww.highcharts.com
в URL запроса: curl -I highcharts.com/highslide/highslide-full.min.js - person sideshowbarker   schedule 16.04.2018https://highcharts.com/highslide/highslide-full.min.js
(то есть no-www
) также можно заставить работать должным образом, если добавить заголовок запросаHost: www.highcharts.com
: curl -I -H Host: www.highcharts.com highcharts.com/highslide/highslide-full.min.js - person sideshowbarker   schedule 16.04.2018