Являются ли относящиеся к протоколу 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:

  • Что-нибудь из списка относительных схем
  • Что-нибудь из списка относительных абсолютных путей
  • Что-нибудь из списка относительных путей

Примечание. Этот ответ не противоречит первому ответу, но мне было только несколько ясно, что пост ответил на вопрос после прочтения его несколько раз и проведения дальнейших исследований. Надеюсь, что этот ответ разъясняет его лучше для других, спотыкающихся об этом.

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