Каково ожидаемое поведение 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 (Хром).

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