Какая разница между использованием "http://" и "//" в src или href?
Я видел, что некоторые сайты используют //somedomain.com/images/img.jpg
vs, используя http://somedomain.com/images/img.jpg
, который также включает http:
.
Есть ли разница между этими двумя? Браузер просто исправляет недостающие http:
, и эти люди ленивы? Мне любопытно за рассуждениями.
Ответы
Ответ 1
Если вы уже находитесь на сайте через http
, предполагается, что вы говорите о http
и подключаетесь к тому же серверу по тому же протоколу. То же самое с https
. Если вы находитесь на http
и хотите перейти на https
, вам нужно указать протокол в href
.
Ответ 2
Не то, что я видел раньше, но это действительная URI-ссылка. Из грамматики:
URI-reference = URI | relative-ref
relative-ref = relative-part [ "?" query ] [ "#" fragment ]
relative-part = "//" authority path-abempty
| path-absolute
| path-noscheme
| path-empty
где в качестве абсолютного URI:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
Для получения дополнительной информации не стесняйтесь читать остальные RFC3986
Ответ 3
URL-адрес, относящийся к схеме, особенно полезен, когда вы обслуживаете веб-сайт HTTPS, и вы хотите поделиться тем же статическим контентом, как таблицы стилей, изображения, сценарии и т.д. с сайта HTTP. Hardcoding http:
в ссылках статического контента, таких как <link href>
, <script src>
, <img src>
и т.д., И просмотр самой веб-страницы над https:
приведет к тому, что средний веб-браузер будет вызывать предупреждение о безопасности, такое как следующий известный IE предупреждения о безопасности:
![alt text]()
![alt text]()
Работа с "небезопасным" контентом по URL-адресу, относящемуся к схеме, устранит эту проблему.
Ответ 4
//somedomain.com/images/img.jpg
- вполне допустимый синтаксис URI по RFC 3986: Раздел 4.2.
Это относится к текущему scheme, и поэтому может быть очень полезно при переключении между http и https, потому что вы выиграли Не нужно указывать схему.
Все современные браузеры поймут этот формат, включая IE 6.
Ответ 5
Я никогда не видел //somedomain.com/images/img.jpg
и не считаю его законным.
Я видел /images/img.jpg
, что означает "использовать текущий домен". Это полезно, если у вас есть несколько веб-адресов (например, aaaaa.com и aaaaa.net), указывающих на один и тот же сайт.