Являются ли относящиеся к протоколу URL-адреса относительными URL-адресами?
Так что рассмотрите относительный к протоколу URL вот так;
//www.example.com/file.jpg
Насколько я помню, я всегда думал о том, что относительные к протоколу URL - это абсолютные URL. Они ведут себя точно так же, как абсолютные URL, и никогда не работают как относительные URL. Я не ожидаю, что это заставит браузер найти что-то на
http://www.example.com///www.example.com/file.jpg
URL-адрес определяет хост и путь (как абсолютный URL-адрес), а схема наследуется от того, какая страница использовалась, и поэтому делает полный однозначный URL-адрес, то есть абсолютный URL-адрес.
Правильно?
Теперь, после дальнейшего исследования этого, я наткнулся на этот ответ, который гласит;
URL называется абсолютным URL, если он начинается со схемы и конкретной части схемы (здесь
//
послеhttp:
). Все остальное является относительным URL.
Ни в вопросе, ни в ответе конкретно не обсуждаются относящиеся к протоколу URL-адреса, поэтому я помнил, что это может быть просто упущением в формулировках.
Тем не менее, теперь я также столкнулся с проблемой в моей разработке, когда система, которая принимает только абсолютные URL-адреса, не работает с URL-адресами, относящимися к протоколу, и я не знаю, является ли это разработкой или из-за ошибки.
Раздел RFC3986, который часто связан с URL-адресами, относящимися к протоколу, также разбрызгивает слово "родственник". 4.3 далее говорит, что абсолютные URI определяют схему.
Все эти доказательства против моего первоначального предположения привели меня к вопросу;
Относительно протокола относительные URL являются относительными или абсолютными?
2 ответа
Каждый относительный URL-адрес является однозначным, учитывая URL-адрес, к которому он относится. Так что если ваша страница http://mypage.com/some/folder/
тогда вы знаете относительный URL this/that
соответствует http://mypage.com/some/folder/this/that
и вы знаете относительный URL //otherpage.com/
решает в http://otherpage.com/
, Важно отметить, что его невозможно решить, не зная URL страницы, к которой он относится.
Относительный URL-адрес - это любой URL-адрес, относящийся к чему-либо и не может быть разрешен сам по себе. Абсолютный URL не требует какого-либо контекста для разрешения.
То, что вы называете "относительным протоколом URL", WHATWG называет "относительным схемой URL" в документе " Стандартный URL", и это не абсолютный URL, а относительный URL.
Конечно, большинство сайтов, доступных по HTTPS, показывают одинаковое содержимое в соответствующих URL-адресах HTTP, что не обязательно так, и поэтому имеет смысл, что URL-адрес, не включающий схему, нельзя считать абсолютным.
Из документа:
Абсолютным URL-адресом должна быть схема, за которой следует ":", за которым следует либо относительный к схеме URL-адрес, если схема является относительной схемой, либо данные схемы в противном случае, необязательно сопровождаемые "?" и запрос.
Конкретно отвечая на ваш вопрос, мы имеем:
Относительный URL-адрес должен быть либо URL-адресом схемы, либо URL-адресом абсолютного пути, либо URL-адресом пути, который не начинается со схемы и ":", за которыми может следовать "?" и запрос.
В точке, где анализируется относительный URL, базовый URL должен находиться в области видимости.
Примеры (в скобках указано необязательно)
относительный путь URL [path segment][/[path segment]]…
about
about/staff.html
about/staff.html?
about/staff.html?parameters
URL-адрес абсолютного пути: /[path-relative URL]
/
/about
/about/staff.html
/about/staff.html?
/about/staff.html?parameters
URL, относящийся к схеме: //[userinfo@]host[:port][absolute-path-relative URL]
//username:password@example.com:8888
//username@example.com
//example.com
//example.com/
//example.com/about
//example.com/about/staff.html
//example.com/about/staff.html?
//example.com/about/staff.html?parameters
абсолютный URL: scheme:[scheme-relative URL][?parameters]
https://username:password@example.com:8888
https://username@example.com
https://example.com
https://example.com/
https://example.com/about
https://example.com/about/staff.html
https://example.com/about/staff.html?
https://example.com/about/staff.html?parameters
относительный URL:
- Что-нибудь из списка относительных схем
- Что-нибудь из списка относительных абсолютных путей
- Что-нибудь из списка относительных путей
Примечание. Этот ответ не противоречит первому ответу, но мне было только несколько ясно, что пост ответил на вопрос после прочтения его несколько раз и проведения дальнейших исследований. Надеюсь, что этот ответ разъясняет его лучше для других, спотыкающихся об этом.