Каково ожидаемое поведение URL, которому предшествует "//", когда он не связан с существующей страницей?
Хороший трюк, чтобы избежать небезопасных предупреждений о содержании на страницах, которые могут быть http
или же https
должен ссылаться на все сценарии или ресурсы в коде, используя "//", который будет использовать текущий протокол страницы вместо указанного.
Если кто-то вводит URL с //
в передней части прямо в поле URL браузера, есть ли поведение по умолчанию, которое выберет браузер? Будет / должен ли он по умолчанию http
или же https
Или какой-то набор правил для проверки и выбора одного над другим?
1 ответ
Ссылка на сетевой путь (например, //example.com/
) является относительной ссылкой. Для разрешения относительной ссылки необходим базовый URI.
При вводе ссылки на сетевой путь в адресную строку браузера такой базовый URI не может быть установлен первыми тремя способами, поэтому четвертый способ, 5.1.4. Базовый URI по умолчанию применяется:
Если ни одно из условий, описанных выше, не применимо, то базовый URI определяется контекстом приложения. Поскольку это определение обязательно зависит от приложения, невозможность определения базового URI с помощью одного из других методов может привести к тому, что один и тот же контент по-разному интерпретируется различными типами приложений.
Другими словами, это зависит от каждого браузера.
Если бы браузер поддерживал только http
а также https
, он, вероятно, выберет ту же схему, которая используется, когда пользователи вводят что-то вроде "www.example.com", поэтому, вероятно, http
(см. справочник суффиксов). Но многие браузеры поддерживают больше схем.
Например, в моей системе, запрашивая //example.com/test
разрешается в URI, используя file
схема: file:////example.com/test
(Fire Fox), file:///example.com/test
(Хром).