Uniform Resource Identifier - Uniform Resource Identifier

Uniform Resource Identifier (URI)
Doména Celosvětová Síť
Zkratka URI

Uniform Resource Identifier ( URI ) je jedinečná sekvence znaků, která identifikuje logický nebo fyzický prostředek používaný webových technologií. Identifikátory URI lze použít k identifikaci čehokoli, včetně objektů v reálném světě, jako jsou lidé a místa, koncepty nebo informační zdroje, jako jsou webové stránky a knihy. Některé identifikátory URI umožňují vyhledávat a získávat informační zdroje v síti (na internetu nebo v jiné soukromé síti, jako je počítačový souborový systém nebo intranet); jedná se o Uniform Resource Locators (URL). Adresa URL poskytuje umístění zdroje. Identifikátor URI identifikuje prostředek podle názvu na zadaném místě nebo adrese URL. Jiné identifikátory URI poskytují pouze jedinečný název, bez prostředků k vyhledání nebo načtení zdroje nebo informací o něm, jedná se o jednotná jména zdrojů (URN). Webové technologie, které používají URI, nejsou omezeny na webové prohlížeče. Identifikátory URI se používají k identifikaci čehokoli popsaného pomocí RDF ( Resource Description Framework ), například konceptů, které jsou součástí ontologie definované pomocí Web Ontology Language (OWL), a lidí, kteří jsou popsáni pomocí slovníku Friend of a Friend, by každý mít individuální URI.

Dějiny

Početí

URI a URL mají sdílenou historii. V roce 1990 návrhy Tim Berners-Lee na hypertext implicitně zavedly myšlenku adresy URL jako krátkého řetězce představujícího zdroj, který je cílem hypertextového odkazu . V té době to lidé označovali jako „název hypertextu“ nebo „název dokumentu“.

Během příštích tří a půl let, kdy se vyvíjely základní technologie HTML, HTTP a webových prohlížečů World Wide Web, vyvstala potřeba odlišit řetězec, který poskytl adresu zdroje, od řetězce, který zdroj pouze pojmenoval. Ačkoli ještě nebyl formálně definován, termín Uniform Resource Locator začal reprezentovat první a spornější Uniform Resource Name začal reprezentovat druhý. V červenci 1992 Berners-Leeova zpráva o IETF „UDI (Universal Document Identifiers) BOF “ zmiňuje adresy URL (jako Uniform Resource Locators), URN (původně jako Unique Resource Numbers) a potřebu zřídit novou pracovní skupinu. V listopadu 1992 se poprvé setkala „Pracovní skupina URI“ IETF .

Během debaty o definování adres URL a URN bylo zřejmé, že koncepty ztělesněné těmito dvěma termíny jsou pouze aspekty základního, zastřešujícího pojmu identifikace zdrojů . V červnu 1994 zveřejnila IETF první žádost Berners-Leeho o připomínky, která potvrdila existenci adres URL a URN. A co je nejdůležitější, definovalo formální syntaxi pro Universal Resource Identifiers (tj. Řetězce podobné URL, jejichž přesné syntaxe a sémantika závisely na jejich schématech). Kromě toho, RFC  1630 pokusil shrnout syntaxe režimů URL v použití v té době. Uznával - ale nestandardizoval - existenci relativních adres URL a identifikátorů fragmentů.

Upřesnění

V prosinci 1994 RFC  1738 formálně definoval relativní a absolutní adresy URL, vylepšil obecnou syntaxi adres URL, definoval, jak přeložit relativní adresy URL do absolutní podoby, a lépe vyjmenoval schémata adres URL, která se tehdy používala. Dohodnutá definice a syntaxe URN musela počkat do vydání IETF RFC 2141 v květnu 1997.

Publikováním IETF RFC 2396 v srpnu 1998 se syntaxe URI stala samostatnou specifikací a většina částí RFC 1630 a 1738 týkajících se URI a URL obecně byla revidována a rozšířena IETF . Nový RFC změnil význam „U“ v „URI“ na „Uniform“ z „Universal“.

V prosinci 1999 poskytl RFC  2732 menší aktualizaci RFC 2396, což umožnilo identifikátorům URI přizpůsobit adresy IPv6 . Řada nedostatků objevených ve dvou specifikacích vedla k úsilí komunity, koordinované spoluautorem RFC 2396 Royem Fieldingem , které vyvrcholilo vydáním IETF RFC 3986 v lednu 2005. Ačkoli zastaral předchozí standard, nevykreslil detaily stávajících schémat URL zastaralých; RFC 1738 nadále řídí tato schémata, pokud není nahrazeno jinak. IETF RFC 2616 například upřesňuje httpschéma. IETF současně publikovalo obsah RFC 3986 jako úplný standard STD 66, což odráží zavedení generické syntaxe URI jako oficiálního internetového protokolu.

V roce 2001 vydala W3C's Technical Architecture Group (TAG) průvodce osvědčenými postupy a kanonickými identifikátory URI pro publikování více verzí daného zdroje. Obsah se například může lišit podle jazyka nebo velikosti, aby se přizpůsobil kapacitě nebo nastavení zařízení použitého k přístupu k tomuto obsahu.

V srpnu 2002 IETF RFC  3305 poukázal na to, že termín „URL“, navzdory rozšířenému veřejnému používání, vybledl téměř do zastarání a slouží pouze jako připomínka, že některé identifikátory URI fungují jako adresy tím, že mají schémata implikující přístup k síti, bez ohledu na skutečné použití. Jak ukazují standardy založené na URI, jako je například Framework popisu zdrojů, identifikace zdrojů nemusí navrhovat získávání reprezentací zdrojů přes internet, ani nemusí vůbec zahrnovat prostředky založené na síti.

Sémantický web používá schéma HTTP URI identifikovat oba dokumenty a koncepty v reálném světě, což je rozdíl, který způsobil zmatek ohledně toho, jak rozlišovat dva. TAG publikoval v roce 2005 e-mail o řešení problému, který se stal známý jako rozlišení httpRange-14 . W3C následně publikoval Note of Interest Group s názvem Cool URI pro sémantický web , který podrobněji vysvětlil použití vyjednávání obsahu a kódu odpovědi HTTP 303 pro přesměrování.

Design

URL a URN

Uniform Resource Name (URN) je URI, který identifikuje zdroj, podle názvu v daném oboru názvů. URN lze použít k rozhovoru o zdroji bez uvedení jeho polohy nebo přístupu k němu. Například v systému International Standard Book Number (ISBN) označuje ISBN 0-486-27557-4 konkrétní vydání Shakespearovy hry Romeo a Julie . URN pro toto vydání bude urn: isbn: 0-486-27557-4 . Neposkytuje však žádné informace o tom, kde najít kopii této knihy.

Uniform Resource Locator (URL), je URI, která určuje prostředky působící na nebo získání reprezentace zdroje, tedy uvedením jak jeho primární přístupový mechanizmus a umístění v síti. Adresa URL například http://example.org/wiki/Main_Pageodkazuje na prostředek identifikovaný jako /wiki/Main_Page, jehož reprezentaci ve formě HTML a souvisejícího kódu lze získat prostřednictvím protokolu Hypertext Transfer Protocol ( http:) od síťového hostitele, jehož název domény je example.org.

URN lze přirovnat ke jménu osoby, zatímco adresu URL lze porovnat s jeho adresou. Jinými slovy, URN identifikuje položku a URL poskytuje způsob, jak ji najít.

Technické publikace, zejména standardy vytvořené IETF a W3C , obvykle odrážejí pohled nastíněný v doporučení W3C ze dne 30. července 2001, které uznává přednost pojmu URI místo schvalování jakéhokoli formálního dělení na URL a URN.

URL je užitečný, ale neformální koncept: URL je typ URI, který identifikuje zdroj prostřednictvím reprezentace jeho primárního přístupového mechanismu (např. Jeho „umístění“ v síti), nikoli podle jiných atributů, které může mít.

Adresa URL jako taková je jednoduše identifikátor URI, který ukazuje na prostředek přes síť. V netechnických kontextech a v softwaru pro World Wide Web však termín „URL“ zůstává široce používán. Navíc termín „webová adresa“ (který nemá žádnou formální definici) se často vyskytuje v netechnických publikacích jako synonymum pro URI, který používá schémata http nebo https . Takové předpoklady mohou vést ke zmatku, například v případě jmenných prostorů XML, které mají vizuální podobnost s rozlišitelnými identifikátory URI .

Specifikace vytvořené WHATWG upřednostňují URL před URI , a proto novější HTML5 API používají URL nad URI .

Standardizujte termín URL. URI a IRI [Internacionalizovaný identifikátor zdroje] jsou jen matoucí. V praxi se pro oba používá jediný algoritmus, takže jejich odlišnost nikomu nepomůže. URL také snadno vyhrává soutěž popularity popularity.

Zatímco většina schémat URI byla původně navržena pro použití s ​​konkrétním protokolem a často mají stejný název, jsou sémanticky odlišné od protokolů. Například schéma http se obecně používá pro interakci s webovými prostředky pomocí HTTP, ale soubor schématu nemá žádný protokol.

Syntax

Každý identifikátor URI začíná názvem schématu, které odkazuje na specifikaci pro přiřazování identifikátorů v rámci tohoto schématu. Syntaxe URI je federovaný a rozšiřitelný systém pojmenování, kde specifikace každého schématu může dále omezovat syntaxi a sémantiku identifikátorů používajících toto schéma. Obecná syntaxe URI je nadmnožinou syntaxe všech schémat URI. Poprvé byl definován v RFC  2396 , publikovaném v srpnu 1998, a dokončen v RFC  3986 , publikovaném v lednu 2005.

Syntaxe obecného URI se skládá z hierarchické pořadí pěti složek :

URI = scheme:[//authority]path[?query] [#fragment]

kde se složka oprávnění rozděluje na tři dílčí součásti :

authority = [userinfo@]host[:port]

To je v diagramu syntaxe znázorněno jako:

Diagram syntaxe URI

URI obsahuje:

  • Neprázdný komponenta schématu následovaná dvojtečkou (:), skládající se ze sekvence znaků začínajících písmenem a následovaných libovolnou kombinací písmen, číslic, plus (+), tečky (.) nebo pomlčky (-). Přestože schémata nerozlišují velká a malá písmena, kanonická forma je malá a dokumenty, které specifikují schémata, to musí dělat s malými písmeny. Příklady populárních programů patříhttp,https,ftp,mailto,file,dataairc. Schémata URI by měla být registrována uúřadu Internet Assigned Numbers Authority (IANA), ačkoli v praxi se používají neregistrovaná schémata.
  • Volitelné autoritní složka, které předchází dvě lomítka (//), zahrnující:
    • Volitelné dílčí komponenta userinfo, která se může skládat zuživatelského jménaa volitelnéhohesla,kterému předchází dvojtečka (:), za níž následuje symbol zavináč (@). Použití formátuusername:passwordv dílčí komponentě userinfo je z bezpečnostních důvodů zastaralé. Aplikace by neměly vykreslovat jako čistý text žádná data za první dvojtečkou (:) nalezenou v rámci dílčí komponenty userinfo, pokud data za dvojtečkou není prázdný řetězec (bez hesla).
    • A subkomponenta hostitele , skládající se buď z registrovaného jména (včetně, ale bez omezení nanázev hostitele) neboIP adresy. AdresyIPv4musí být vdesítkové desítkové notaciaadresyIPv6musí být uzavřeny v závorkách ([]).
    • Volitelné port subcomponent, kterému předchází dvojtečka (:).
  • A složka cesty , skládající se ze sekvence segmentů cesty oddělených lomítkem (/). Pro identifikátor URI je vždy definována cesta, i když definovaná cesta může být prázdná (nulová délka). Segment může být také prázdný, což má za následek dvě po sobě jdoucí lomítka (//) v komponentě cesty. Komponenta cesty se může podobat nebo mapovat přesně nacestu systému souborů,ale ne vždy to znamená vztah k jedné. Pokud je přítomna komponenta oprávnění, pak komponenta cesty musí být buď prázdná, nebo musí začínat lomítkem (/). Pokud komponenta oprávnění chybí, cesta nemůže začínat prázdným segmentem, tj. Dvěma lomítky (//), protože následující znaky by byly interpretovány jako komponenta oprávnění. Konečný segment cesty může být označován jako „slimák“.
Oddělovač dotazů Příklad
Ampersand ( &) key1=value1&key2=value2
Středník ( ;) key1=value1;key2=value2
  • Volitelné komponentu dotazu předcházející otazník (?), obsahujícířetězec dotazunehierarchických dat. Jeho syntaxe není dobře definována, ale konvencí je nejčastěji sekvencepárů atribut – hodnotaoddělenáoddělovačem.
  • Volitelné fragmentová složka, před kterou je znakhash(#). Fragment obsahujeidentifikátor fragmentuposkytující směr k sekundárnímu zdroji, jako je nadpis sekce v článku identifikovaný zbytkem URI. Když je primárním zdrojemdokumentHTML, fragment je častoidatributemkonkrétního prvku a webové prohlížeče tento prvek posouvají do zobrazení.

Řetězce datových oktetů v rámci URI jsou reprezentovány jako znaky. Povolené znaky v rámci URI jsou znaky ASCII pro malá a velká písmena moderní anglické abecedy , arabské číslice , spojovník , tečka , podtržítko a vlnovka . Oktety reprezentované jakýmkoli jiným znakem musí být kódovány procenty .

Ze znakové sady ASCII : / ? # [ ] @jsou znaky vyhrazeny pro použití jako oddělovače generických komponent URI a musí být kódovány procenty-například %3Fpro otazník. Znaky ! $ & ' ( ) * + , ; =jsou povoleny generickou syntaxí URI, aby byly použity jako nekódované v uživatelských informacích, hostiteli a cestě jako oddělovače. Navíc, :a @mohou objevit unencoded uvnitř cesta, dotaz a fragment; a ?a /mohou objevit unencoded jako data v dotazu nebo fragmentu.

Na následujícím obrázku jsou ukázkové URI a jejich součásti.

          userinfo        hostitelský       port 
          ┌──┴───┐┐  ┌──────┴───────┐  ┌┴┐
  https: //john.doe@www.example.com: 123/forum/dotazy/? tag = networking & order = newest#top
  └─┬─┘    └───────────┬──────────────┘ └───────┬───────┘  └────────────┬──────────────┘┘  └┬┘ 
  fragment dotazu cesty autority schématu                                                        

  ldap: // [2001: db8 :: 7]/c = GB? objectClass? one
  └┬─┘ └──---- - ┬
  dotaz na cestu autority schématu

  mailto: John.Doe@example.com
  └─┬─----┘
  cesta schématu

  novinky: comp.infosystems.www.servers.unix
  └┬─┘ └─------
  cesta schématu

  tel:+1-816-555-1212
  └┬┘ └──────┬───────┘
  cesta schématu

  telnet: //192.0.2.16: 80/
  └─┬──┘ └──────┬─────┘│
  cesta autority schématu

  urn: oasis: names: specification: docbook: dtd: xml: 4.1.2
  
  cesta schématu

Reference URI

Odkaz URI je buď URI, nebo relativní odkaz, pokud nezačíná komponentou schématu následovanou dvojtečkou ( :). Segment cesty, který obsahuje znak dvojtečky (např. foo:bar), Nelze použít jako první segment cesty relativního odkazu, pokud jeho komponenta cesty nezačíná lomítkem ( /), protože by byla zaměněna za komponentu schématu. Takovému segmentu cesty musí předcházet bodový segment cesty (např. ./foo:bar).

Jazyky značkování webových dokumentů často používají odkazy URI k odkazování na jiné prostředky, jako jsou externí dokumenty nebo konkrétní části stejného logického dokumentu:

  • v HTML poskytuje hodnota srcatributu imgprvku odkaz na URI, stejně jako hodnota hrefatributu prvku anebo link;
  • v XML je systémový identifikátor zobrazený za SYSTEMklíčovým slovem v DTD referencí URI bez fragmentů;
  • v XSLT je hodnota hrefatributu xsl:importprvku/instrukce referencí URI; podobně první argument document()funkce.
https://example.com/path/resource.txt#fragment
//example.com/path/resource.txt
/path/resource.txt
path/resource.txt
../resource.txt
./resource.txt
resource.txt
#fragment

Řešení

Vyřešení reference URI proti základnímu URI má za následek cílový URI . To znamená, že základní URI existuje a je absolutním URI (URI bez komponenty fragmentu). Základní URI lze získat v pořadí podle priority z:

  • samotný URI odkazu, pokud je to URI;
  • obsah zastoupení;
  • entita zapouzdřující reprezentaci;
  • identifikátor URI použitý pro skutečné načtení reprezentace;
  • kontext aplikace.

V rámci reprezentace s dobře definovaným základním URI

http://a/b/c/d;p?q

relativní reference je vyřešena na svůj cílový URI následovně:

"g:h"     -> "g:h"
"g"       -> "http://a/b/c/g"
"./g"     -> "http://a/b/c/g"
"g/"      -> "http://a/b/c/g/"
"/g"      -> "http://a/g"
"//g"     -> "http://g"
"?y"      -> "http://a/b/c/d;p?y"
"g?y"     -> "http://a/b/c/g?y"
"#s"      -> "http://a/b/c/d;p?q#s"
"g#s"     -> "http://a/b/c/g#s"
"g?y#s"   -> "http://a/b/c/g?y#s"
";x"      -> "http://a/b/c/;x"
"g;x"     -> "http://a/b/c/g;x"
"g;x?y#s" -> "http://a/b/c/g;x?y#s"
""        -> "http://a/b/c/d;p?q"
"."       -> "http://a/b/c/"
"./"      -> "http://a/b/c/"
".."      -> "http://a/b/"
"../"     -> "http://a/b/"
"../g"    -> "http://a/b/g"
"../.."   -> "http://a/"
"../../"  -> "http://a/"
"../../g" -> "http://a/g"

URL munging

URL munging je technika, pomocí které je příkaz připojen k URL, obvykle na konci, za „?“ token . Ve WebDAV se běžně používá jako mechanismus přidávání funkcí do HTTP . V systému správy verzí, například pro přidání příkazu „pokladna“ na adresu URL, je napsán jako http://editing.com/resource/file.php?command=checkout. Má tu výhodu, že je pro analyzátory CGI snadné a v tomto případě také funguje jako prostředník mezi HTTP a podkladovým zdrojem.

Vztah k oborům názvů XML

V XML je obor názvů abstraktní doména, ke které lze přiřadit kolekci názvů prvků a atributů. Název oboru názvů je řetězec znaků, který musí dodržovat obecnou syntaxi URI. Název se však obecně nepovažuje za identifikátor URI, protože specifikace URI rozhoduje nejen o lexikálních komponentách, ale také o jejich zamýšleném použití. Název oboru názvů nutně neznamená žádnou sémantiku schémat URI; například název oboru názvů začínající na http: nemusí mít žádnou souvislost s používáním protokolu HTTP .

Původně se název oboru názvů mohl shodovat se syntaxí jakékoli neprázdné reference URI, ale použití relativních odkazů na URI bylo W3C zastaralé. Samostatná specifikace W3C pro obory názvů v XML 1.1 umožňuje odkazům na internacionalizovaný identifikátor zdroje (IRI) sloužit jako základ pro názvy oborů kromě odkazů na URI.

Viz také

Poznámky

Reference

Další čtení

externí odkazy