38

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

http://www.google.com/

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

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

http://www.weather.com/

http://www.weather.com//

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

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

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

4 ответа4

64

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

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


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

18

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

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

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

13

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

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

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .