Как Включать CSS и файлы JS через HTTPS при необходимости?

Я добавляю внешний файл CSS и внешний файл JS к моим заголовкам и нижним колонтитулам. При загрузке страницы HTTPS некоторые браузеры жалуются, что я загружаю незащищенное содержание.

Существует ли простой способ заставить браузер загрузить внешнее содержание через HTTPS, когда самой страницей является HTTPS?

77
задан Nathan H 27 April 2010 в 22:08
поделиться

3 ответа

Использовать пути, относящиеся к протоколу.

Таким образом, не

<link rel="stylesheet" href="http://example.com/style.css">
<script src="http://example.com/script.js"></script>

, а

<link rel="stylesheet" href="//example.com/style.css">
<script src="//example.com/script.js"></script>

, тогда он будет использовать протокол родительской страницы.

123
ответ дан 24 November 2019 в 10:58
поделиться

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

Если мы посмотрим на бессистемные внешние javascript-файлы промышленного уровня, то в наиболее успешных из них будут использоваться как сниффинг document.location.protocol, так и внедрение элементов сценария, чтобы использовать правильный протокол.

Таким образом, вы можете использовать что-то вроде:

<script type="text/javascript">
  var protocol = (
      ("https:" == document.location.protocol) 
      ? "https" 
      : "http"
  );
  document.write(
      unescape(
          "%3Cscript"
              + " src='"
                  + protocol 
                  + "://"
                  + "your.domain.tld"
                  + "/your/script.js"
              + "'"
              + " type='text/javascript'
          + "%3E"
          + "%3C/script%3E"
      ) // this HAS to be escaped, otherwise it would 
        // close the actual (not injected) <script> element
  );
</script>

То же самое можно сделать и для внешних включений CSS.

И между прочим: будьте осторожны, используйте только относительный путь url () в вашем CSS, если таковой имеется, иначе вы все равно можете получить предупреждение "смешанный безопасный и небезопасный" ....

7
ответ дан 24 November 2019 в 10:58
поделиться

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

Однако, если вы переходите через домен к CDN или сайту ресурсов, или если вам нужно использовать абсолютные пути, вам нужно будет использовать скрипт на стороне сервера для изменения ссылок или всегда использовать https: //

0
ответ дан 24 November 2019 в 10:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: