Дэйв Уорд говорит,
Это не совсем легкое чтение, но в разделе 4.2 RFC 3986 предусмотрены полностью определенные URL-адреса, в которых полностью отсутствует протокол (HTTP или HTTPS). Когда протокол URL-адреса пропущен, браузер использует протокол базового документа.
Проще говоря, эти URL-адреса без протокола позволяют использовать такую ссылку в любом браузере, в котором вы ее попробуете:
//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js
Поначалу это выглядит странно, но этот URL «без протокола» - лучший способ ссылаться на сторонний контент, доступный через HTTP и HTTPS.
Это, безусловно, решит кучу ошибок со смешанным контентом, которые мы видим на страницах HTTP - при условии, что наши ресурсы доступны как через HTTP, так и через HTTPS.
Это полностью совместимо с браузерами? Есть ли другие предостережения?
источник
Ответы:
Я тщательно проверил это перед публикацией. Из всех браузеров, доступных для тестирования на Browsershots , я нашел только один, который неправильно обрабатывал относительный URL протокола: скрытый браузер * nix под названием Dillo .
Есть два недостатка, о которых я получил отзыв:
источник
link
элементе. Например, при указании//fonts.googleapis.com/css?family=Rokkitt:400,700
IE6 пытается загрузитьhttp://mysite.com/fonts.googleapis.com/css/<...>
. Не так хорошо, как хотелось бы!Вопрос о том, можно ли изменить все их ссылки на протокол-относительные, может быть спорным, учитывая вопрос о том, следует ли это делать. По словам Пола Айриша :
источник
Если вы используете URL-адреса без протокола для загрузки таблиц стилей, IE 7 и 8 загрузят их дважды: http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/
Так что этого следует избегать для CSS, если вам нравится хорошая производительность.
источник
Да, ссылки на сетевые пути уже были указаны в RFC 1808 и должны работать со всеми браузерами.
источник
Просто добавьте это в смесь, если вы разрабатываете на локальном сервере, это может не сработать. Вам нужно указать схему, в противном случае браузер может предположить, что
src="//cdn.example.com/js_file.js"
это такsrc="file://cdn.example.com/js_file.js"
и будет, потому что вы не размещаете этот ресурс локально.Microsoft Internet Explorer, кажется, особенно чувствителен к этому, посмотрите на этот вопрос: не удается загрузить jQuery в Internet Explorer на локальный хост (WAMP)
Вы, вероятно, всегда пытаетесь найти решение, которое работает во всех ваших средах с наименьшим количеством необходимых изменений.
Решение, используемое HTML5Boilerplate, состоит в том, чтобы иметь запасной вариант, когда ресурс загружен неправильно, но это работает, только если вы включите проверку:
Я разместил этот ответ и здесь .
ОБНОВЛЕНИЕ: HTML5Boilerplate теперь использует
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
после принятия решения об устаревании относительных URL-адресов протокола, см. Здесь .источник
У меня не было этих проблем при использовании: //domain.com - но вам нужно добавить двоеточие в начале. Йост хорошо написал об этом некоторое время назад. Но это потеряно в его куче сообщений в блоге.
источник
Если вы хотите убедиться, что все запросы обновлены до защищенного протокола, есть простой способ использовать заголовок обновления политики безопасности контента.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests
источник