Недавно я видел такие URL-адреса в документах CDN:
//cloudflare.cdnjs.com/foo
И я понял, что им не хватает http:
или https:
перед ними.
Хм, подумал я и попытался реализовать их в локальном тесте, и понял, что они не работают (они разрешили //
быть file://
, хотя это должно было быть http:
.
Затем, когда я загрузил это на свой тестовый сервер, он работал (разрешен //
как http://
).
Поэтому мне было интересно, почему кто-нибудь напишет это без протокола?
Благодарю.
(Технически это не "протокол", а схема URI)
Для HTTP исключение схемы означает, что UA будет использовать текущую схему (и, следовательно, протокол) для извлечения файла, что означает, что какой-либо копируемый + вставленный код может быть повторно использован для запросов HTTP и HTTPS (или даже SPDY) без запуска предупреждения "Частично защищенные страницы" в браузерах.
//cloudflare.cdnjs.com/foo
разрешается в file://cloudflare.cdnjs.com/foo
В зависимости от параметров безопасности пользователя браузеры часто представляют предупреждение, если страница обслуживает смешанный контент (как HTTP, так и HTTPS). Конечно, вы могли бы просто закодировать свой HTML, используя тот же протокол, который вы планируете размещать на странице. Однако нередко использовать один и тот же HTML как в безопасных, так и в незащищенных порталах. Кроме того, вы бы предпочли, чтобы ваш HTML был агностиком для базового протокола.
Написание ссылок CDN, подобных этому, гарантирует, что запрос CDN использует тот же протокол, что и главная страница.
//
вы выберетеhttp
илиhttps
зависимости от того, что использует страница. Я столкнулся с проблемой, когда Firefox не использовал мои шрифты Google (если я правильно помню) на странице, потому что я указалhttp
и страница былаhttps
. Это вещь безопасности. Так что лучше всего оставить на//
.