В URL для чего //

Как правило, когда я вижу // обычно следует какой-то префикс протокола http: или же ftp:, Я никогда не видел его в другом месте. Например,

http://www.google.com/

это типичный URL

Тем не менее, я обнаружил, что следующие два синтаксиса дают разные версии одного и того же сайта,

http://www.weather.com/

http://www.weather.com//

Я бы подумал что // где-либо, кроме спецификации протокола, будет недействительным. К моему удивлению, я был неправ. Что там с финалом? // что дает другую версию того же сайта?

РЕДАКТИРОВАТЬ:

Кто-то на этом сайте наверняка заметил другую, потому что обе ссылки теперь попадают на одну и ту же страницу.

4 ответа

Решение

Ведущий // является частью синтаксиса URL. Изобретатель всемирной паутины извинился за эту ошибку.

На самом деле, если вы думаете об этом, ему не нужен двойной слеш. Я мог бы спроектировать так, чтобы не было двойной косой черты. - сэр Тим Бернерс-Ли, изобретатель всемирной паутины


Что касается трейлинга //Это действительно не двойная косая черта. Первая косая черта отделяет имя хоста от пути. Последний слеш - это путь. Веб-сервер может, если он хочет, трактовать путь / отличается от пустого пути, и, видимо, Weather.com делает. Что касается того, случайно это или преднамеренно, вы должны спросить их об этом.

Совсем недавно можно утверждать, что двойная косая черта играет определенную роль. Google рекомендует (например, чтобы избежать случайного вызова небезопасного содержимого с защищенной страницы), исключив протокол из встроенных ресурсов (таблиц стилей, js и т. Д.), Например так

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>

Таким образом, теперь очевидно, что такой URL без протокола является полностью определенным URL, а не относительным URL (который начинается с одной косой черты).

Чтобы фактически ответить на вопрос, оригинальная спецификация дала протокол http: (или возможно ftp:, gopher:, mailto:, news:, telnet:, wais:, file: или же prospero:) затем // чтобы указать, что использовался синтаксис Uniform Resource Locator (URL), затем хост (необязательно с префиксом user:password@) тогда адрес правильный начинай с другого /, Это было предложено в RFC 1738.

По мере развития интернета http: стал доминирующим протоколом, поэтому браузеры теперь предполагают, что префикс http:// должен быть добавлен, если его там нет.

Я хотел бы добавить к принятому ответу Дэвида:

Несмотря на извинения изобретателя сети, я думаю, что синтаксис двойной косой черты служил важной цели: визуально выделиться. Двойная косая черта позволяла легко визуально различать URL-адреса в тексте без гиперссылок. Когда вы увидели двойную косую черту, вы сразу же подумали, что ее можно ввести в окне браузера, подобно тому, как вы думали, текст, содержащий @ может быть использован для отправки электронной почты. Это было особенно важно на этапе перехода к вебу, где у протоколов той эпохи (ftp, telnet, gopher) было свое странное представление об адресах серверов или путях к ресурсам, реже обоим. Большинство проблем, связанных с двойной косой чертой, все еще будут существовать, потому что двойная косая черта является наименее загадочной частью URL-адреса, учитывая номера портов, процентное кодирование и чувствительность к регистру. Но наличие такого URL-адреса, как http:thing.com, можно легко спутать с моим примером здесь:thing.com. Посмотрите на http:// с другой стороны, как он сияет, как бриллиант. Двойная косая черта была важной частью веб-символики, и я считаю, что она также ускорила процесс принятия, даже если это было непреднамеренно.

Они также могли бы облегчить работу AmigaOS по различению имен файлов и URL-адресов, поскольку AmigaOS использовал синтаксис пути к файлу volume:path/to/destination,:)

Другие вопросы по тегам