Веб-технологии в первичном назначении предоставляют доступ к разнообразным статическим и динамическим ресурсам, которые задаются через URI (uniform resource identifier), являющийся уникальной последовательностью символов, идентифицирующей свой физический или логический ресурс.
Структура URI
1 |
URI = [<scheme>:][//<authority>]/<path>[?<query>][#<fragment>] |
- scheme: - схема обращения к ресурсу, которая часто указывает на сетевой протокол, например http, ftp, file, ldap, mailto, urn
- //authority + /path - иерархическая-часть содержит данные, обычно организованные в иерархической форме, которые, совместно с данными в неиерархическом компоненте запрос, служат для идентификации ресурса в пределах видимости URI-схемы. Обычно иер-часть содержит путь к ресурсу (и, возможно, перед ним, адрес сервера, на котором тот располагается) или идентификатор ресурса (в случае URN).
- ?query - запрос, необязательный компонент URI, содержит набор параметров
- param1=value1[¶m2=value2[¶m3=value3[&...]]]
- #fragment - фрагмент необязательный компонент !!!
Запрос
- Строка запроса состоит из ряда пар поле-значение.
- В каждой паре имя поля и значение разделяются знаком равенства " =".
- Серии пар разделяются амперсандом , " &" (или точкой с запятой , " ;" для URL-адресов, встроенных в HTML и не сгенерированных с помощью <form>...</form>
Кодировка
Некоторые символы не могут быть частью URL (например, пробел), а некоторые другие символы имеют особое значение в URL (например, символ #может использоваться для дальнейшего указания фрагмента документа). В формах HTML этот символ =используется для отделения имени от значения. Общий синтаксис URI использует кодировку URL для решения этой проблемы, в то время как HTML-формы делают некоторые дополнительные замены, а не применяют процентное кодирование для всех таких символов.
- Символы, которые не могут быть преобразованы в правильную кодировку, заменяются числовыми ссылками на символы HTML.
- ПРОБЕЛ кодируется как ' +' или ' %20'
- Буквы ( A- Zи a- z), цифры ( 0- 9) и символы ' ~',' -',' .' и ' _' оставляются как есть
- + кодируется %2B
- Все остальные символы кодируются как %HH шестнадцатеричное представление, при этом любые символы, отличные от ASCII, сначала кодируются как UTF-8
Примеры URI
Абсолютные URI
- https://ru.wikipedia.org/wiki/URI
- ftp://ftp.is.co.za/rfc/rfc1808.txt
- file://C:\UserName.HostName\Projects\Wikipedia_Articles\URI.xml
- file:///C:/file.wsdl
- file:///Users/John/Documents/Projects/Web/MyWebsite/about.html
- ldap://[2001:db8::7]/c=GB?objectClass?one
- mailto:John.Doe@example.com
- sip:911@pbx.mycompany.com
- news:comp.infosystems.www.servers.unix
- data:text/plain;charset=iso-8859-7,%be%be%be
- tel:+1-816-555-1212
- telnet://192.0.2.16:80/
- urn:oasis:names:specification:docbook:dtd:xml:4.1.2
- urn:oid:1.2.840.113549.1.1.1
Относительные URI
- /relative/URI/with/absolute/path/to/resource.txt
- //example.org/scheme-relative/URI/with/absolute/path/to/resource.txt
- relative/path/to/resource.txt
- ../../../resource.txt
- resource.txt
- /resource.txt#frag01
- #frag01
Источники
URI //wikipedia.org
URI — сложно о простом (Часть 1) iGusev@habr.com (18 NOV 2019)
Какая разница между URI, URL и URN? //specialistoff.net
Query string //en.wikipedia.org