1

На моем компьютере с Windows 10 я могу ввести URL-адрес файла локального каталога (например, file:///D:/temp) или локальный файл (например, file:///D:/temp/homepage.html) и все работает отлично.

Тем не менее, там, где в этих действительных URL есть косая черта, я могу вставить еще много, и все по-прежнему работает нормально. Например:

file:///D://///////////////////temp///////////////MiscTests///////

Также смотрите скриншот из Chrome:

Сначала я подумал, что это ошибка в Chrome, но Opera, Edge и Firefox также делают то же самое, поэтому я предполагаю, что URL-адрес вполне допустим.

В качестве связанной с этим проблемы стоит отметить, что эти браузеры также допускают несколько косых черт в веб-URL (например, https:///////////////////www.amazon.com), хотя в этом случае URL в адресной строке будет исправлен на https://www.amazon.com . Так что это не просто URL-адреса файлов, которые допускают множество слешей.

Есть ли веская причина, по которой браузеры разрешают все эти косые черты, или это упущение в некоторых спецификациях, которые нельзя исправить?

1 ответ1

3

В RFC3986, раздел 3.3 говорится, что в URL допустимы множественные слэши.

/ В URL определяет, где сегменты URL разделены. Двойная косая черта (за пределами разделителя полномочий, который является первым //) приведет к пустому сегменту, который в соответствии с RFC 2396 можно игнорировать. Технически веб-сервер может выдать исключение, но пользователи ожидают, что веб-серверы будут обрабатывать подобные вещи, поэтому он просто игнорирует это.

Кстати, это также происходит в Unices (которые, вероятно, были смоделированы в сети):

Раздел 3.266 спецификации Single Unix определяет, что несколько слэшей можно рассматривать как один:

Строка символов, используемая для идентификации файла. В контексте стандарта IEEE Std 1003.1-2001 имя пути состоит не более чем из {PATH_MAX} байтов, включая завершающий нулевой байт. Он имеет необязательный начальный слеш, за которым следуют ноль или более имен файлов, разделенных косыми чертами. Имя пути может содержать один или несколько завершающих слэшей. Несколько последовательных слешей считаются такими же, как один слеш.

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