Использует ли //www.example.com в Javascript протокол http / https автоматически - PullRequest
5 голосов
/ 27 апреля 2011

Похоже, что отсутствие http заставляет его соединяться с использованием HTTP, но у меня нет сайта с включенным HTTPS, чтобы проверить, верно ли это и для HTTPS.

Использует ли //www.example.com/test.js автоматически выбирает протокол на основе протокола основного документа?

1 Ответ

4 голосов
/ 27 апреля 2011

http://paulirish.com/2010/the-protocol-relative-url/

имеет отличную статью по этой самой проблеме.Включено здесь:

URL, относящийся к протоколу

27 октября 2010 г.

Автор: Пол Ирриш

Есть небольшая хитростьэто поможет вам избежать головной боли:

<img src="//domain.com/img/logo.png">

Если браузер просматривает эту текущую страницу через HTTPS, он запросит этот ресурс по протоколу HTTPS, в противном случаеобычно * запрашивают его по HTTP.Это предотвращает появление этого ужасного сообщения об ошибке «Эта страница содержит как защищенные, так и незащищенные элементы» в IE, сохраняя все ваши запросы активов в рамках одного протокола.

* Конечно, если вы просматриваете файл локально,он попытается запросить файл с протоколом file: //.

Мы используем этот трюк в HTML5 Boilerplate для умного запроса jQuery с Google CDN:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>

Технически это называется «ссылкой на сетевой путь» согласно RFC 3986. Да, и если вы хотите быть по-настоящему правильным, вы будете использовать термин «схема» вместо «протокол», когда говорите об URL-адресах.

Этот прием также хорошо работает в CSS:

.omgomg { background: url(//websbestgifs.net/kittyonadolphin.gif); }

… при условии, что на сайте, на который вы указываете, этот ресурс доступен как по HTTP, так и по HTTPS.

Предупреждение: при использовании на<link> или @import для таблицы стилей, IE7 и IE8 загружают файл дважды.Тем не менее, все остальные варианты применения вполне хороши.

Спасибо miketaylr, ralphholzmann, annevk за ум на этом и ajaxian, где, как мне кажется, я выучил это 4 года назад?возможно?

2011.01.23: Но .. как насчет использования этого в фрагменте Google Analytics?Да, конечно, это было бы неплохо .. Поэтому я работал с ведущим разработчиком javascript в Google Analytics (Боже, мне нравится работать в Google), чтобы посмотреть, сможем ли мы это сделать ... Оказывается, мы не можем.В IE6 есть ошибка в пограничном регистре, из-за которой диалоговое окно взрывается ... при некоторых настройках безопасности (не уверены, являются ли они значениями по умолчанию) при запросе из поддоменов не-'sss'.скриншот здесь.Поэтому не стесняйтесь брать 40 байтов из своего фрагмента GA, если вам не нужен IE6 ... в противном случае вам понадобится этот троичный оператор.:)

...