177

HTTP начинается с двух слешей. Например, http://example.com .

То же самое касается FTP. Например, ftp://example.com .

Однако файл "URL" начинается с трех косых черт. Например, при чтении PDF-файла с использованием Chrome URL-адрес будет следующим file:///D:/Desktop/Book.pdf .

Почему URL-адреса файлов используют три слеша?

3 ответа3

247

Полный синтаксис:file://host/path .

Если хост является localhost , его можно опустить, в результате чего file:///path .

См. RFC 1738 - Унифицированные указатели ресурсов (URL):

URL файла принимает форму:

file://<host>/<path>

[...]

В особом случае <host> может быть строкой "localhost" или пустой строкой; это интерпретируется как «машина, с которой интерпретируется URL».

26

Деннис объяснил третью косую черту, необходимую для отделения host от path , но две другие гораздо интереснее ...

Оказывается, они были бесполезным и несколько произвольным дополнением к синтаксису URL. Тим Бернерс-Ли, изобретатель Всемирной паутины и автор многих ее стандартов (включая RFC, с которым связался Деннис), выразил сожаление по поводу использования «двойного слеша» в интервью в 2009 году.

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

http://bits.blogs.nytimes.com/2009/10/12/the-webs-inventor-regrets-one-small-thing/

Итак, если не считать незначительного (и нехарактерного) упущения в предвидении около 18 лет назад, URL вашего файла мог бы быть просто file:/D:/Desktop/Book.pdf , а не file:///D:/Desktop/Book.pdf .

Существует, чтобы ответить на ваш вопрос, нет веской причины, почему URL-адреса имеют 3 слеша.

12

Как уже упоминалось, схема файла имеет вид "file://<host>/<path>". Хотя у большинства браузеров не будет проблем только с двумя слешами, и это справедливо.

При прочих равных условиях тройной слэш и ключевое слово "localhost" существуют только для обеспечения соответствия действительному синтаксису URI/URL. В контексте файловой схемы хост не имеет смысла, поскольку он загружается непосредственно из файловой системы без какого-либо явного протокола передачи или пути к документу сервера. Поскольку это не HTTP, он не может загружаться со стандартного веб-сервера, где теоретически можно настроить несколько локальных виртуальных хостов. И он не может загружаться со стандартного сетевого тома, который технически является другим "хостом", так как браузер просто использует имя тома, например «file:///volume /foo». Наконец, попытка таких вещей, как «file://example.com/some/file», не работает. Возможно, есть какая-то причина для поддержки внешнего хоста, но я не могу придумать ни одной.

IETF в настоящее время готовит изменения, чтобы убрать требование тройной косой черты, хотя в черновике также добавлены некоторые странные возможности, такие как file:c|/path и even file://///host.example.com/path .

https://tools.ietf.org/html/draft-ietf-appsawg-file-scheme-03

«3. Эта спецификация не определяет и не запрещает механизм доступа к нелокальным файлам. "

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