Koks skirtumas tarp URI, URL ir URN?

Žmonės kalba apie URL , URI ir URN , tarsi jie būtų skirtingi dalykai, bet jie atrodo vienodai plika akimi.

Kokie yra jų skirtumai?

3378
07 окт. nustatė Seanas McMains 07 spalis 2008-10-07 00:26 '08 12:26 val. 2008-10-07 00:26
@ 32 atsakymai
  • 1
  • 2

RFC 3986 :

URI gali būti toliau klasifikuojami kaip lokatorius, pavadinimas arba abu. Sąvoka „vienintelis šaltinis“ (angl. Single Resource Locator) (URL) reiškia URI pogrupį, kuris, be išteklių nustatymo, apibrėžia išteklių, apibūdindamas jo pirminį prieigos mechanizmą (pvz., Tinklo „vietą“). Terminas "vienodas išteklių pavadinimas" reiškia, kad (URN) istoriškai naudojamas nurodyti abu URI pagal urnos schemą [RFC2141], kuris turi išlikti unikalus ir pastovus net tada, kai išteklius nustoja egzistuoti arba tampa nepasiekiamas ir bet kuris kitas URI su savybėmis pavadinimas.

Taigi visi URL yra URI (iš tikrųjų ne visi - žr. Žemiau), ir visi URN yra URI, tačiau URN ir URL yra skirtingi, todėl negalite pasakyti, kad visi URI yra URL.

Redaguoti: anksčiau maniau, kad visi URL yra galiojantys URI, tačiau pagal komentarus:

Ne visi URL yra URI. Tai priklauso nuo RFC aiškinimo. Pavyzdžiui, „Java“, URI analizatorius nepatinka [ arba ] , ir tai yra todėl, kad specifikacija sako „ne verta“, o ne „neturėtų“.

Taigi, deja, vanduo tęsiasi.

Jei neskaitėte Roger Pat atsakymo , aš taip pat patarčiau tai padaryti.

1385
07 окт. Atsakyti Jon Skeet spalio 07 d 2008-10-07 00:29 '08 at 0:29 2008-10-07 00:29

Nustatykite URI ir raskite URL ; tačiau vietovės taip pat yra identifikatoriai , todėl kiekvienas URL taip pat yra URI, tačiau yra URI, kurie nėra URL.

Pavyzdžiai

  • Roger pat

Tai mano vardas, kuris yra identifikatorius. Tai atrodo kaip URI, tačiau jis negali būti URL, nes jis nieko nesako apie mano buvimo vietą arba kaip susisiekti su manimi. Šiuo atveju taip pat atsitinka ne mažiau kaip 5 kiti žmonės tik JAV.

  • 4914 West Bay Street, Nasau, Bahamos

Tai yra vietovė, kuri yra šios fizinės vietos identifikatorius. Tai panaši į URL ir URI (nes visi URL yra URI) ir netiesiogiai identifikuoja kaip „rezidentą“. Šiuo atveju jis vienareikšmiškai atpažįsta mane, bet tai pasikeis, jei gausiu kambarioku.

Sakau „kaip“, nes šie pavyzdžiai nesilaiko reikalingos sintaksės.

Populiari painiava

Iš „ Wikipedia“ :

Apskaičiuojant Uniform Resource Locator (URL) yra vienodo išteklių identifikatoriaus (URI) pogrupis, nurodantis, kur galima rasti nustatytą šaltinį, ir mechanizmas jį gauti. Visuomenėje ir daugelyje techninių dokumentų bei žodinių diskusijų jis dažnai naudojamas kaip sinergija URI , ... [mano akcentas]

Dėl šios bendros painiavos daugelis produktų ir dokumentų neteisingai naudoja vieną terminą, o ne kitą, nurodo savo skirtumą arba naudoja jų sinonimą.

Šiukšliadėžės

Mano vardas, Roger Pate, gali būti kaip URN (vienodas išteklių pavadinimas), išskyrus tuos, kurie yra daug labiau reguliuojami ir turėtų būti unikalūs tiek erdvėje, tiek laike.

Kadangi aš šiuo metu bendrinu šį pavadinimą su kitais žmonėmis, tai nėra visuotinai unikalus ir netinka URN. Tačiau, net jei nė viena kita šeima nenaudojo šio pavadinimo, aš esu pavadintas mano tėvo seneliu, todėl jis vis tiek nebus unikalus laiku. Ir net jei taip nebūtų, sugebėjimas paskambinti mano palikuonims po to daro jį netinkamą naudoti URN.

URNs skiriasi nuo šio kietojo unikalaus suvaržymo URL, nors jie abu turi URI sintaksę.

3370
31 дек. Atsakymą pateikė Roger Pate, gruodžio 31 d 2009-12-31 09:32 '10, 9:32, 2009-12-31 09:32

URI - vienkartinis išteklių identifikatorius

URI yra standartas dokumentams identifikuoti naudojant trumpą skaičių, raidžių ir simbolių eilutę. Jie apibrėžiami pagal RFC 3986 - Uniform Resource Identifier (URI): bendroji sintaksė . URL, URN ir URC yra visi URI tipai.

URL - vienkartinių išteklių paieška

Pateikiama informacija apie tai, kaip ištraukti išteklius iš jos vietos. Pavyzdžiui:

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:user@example.com
  • file:///home/user/file.txt
  • tel:1-888-555-5555
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (santykinis URL, naudingas tik kito URL kontekste)

URL visada prasideda protokolu ( http ) ir paprastai pateikiama informacija, pvz., Tinklo šeimininko ( example.com ) pavadinimas ir dažnai kelias į dokumentą ( /foo/mypage.html ). URL gali būti užklausos parametrai ir fragmentų identifikatoriai.

URN - vieno šaltinio pavadinimas

Nurodo išteklių, turinčių unikalų ir nuolatinį pavadinimą, tačiau nebūtinai nurodo, kaip jį rasti internete. Paprastai jis prasideda urn: prefiksu urn: Pavyzdžiui:

  • urn:isbn:0451450523 norint identifikuoti knygą pagal ISBN numerį.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 visuotinai unikalus identifikatorius
  • urn:publishing:book yra XML vardų sritis, kuri identifikuoja dokumentą kaip knygos tipą.

URN gali nustatyti idėjas ir koncepcijas. Jie neapsiriboja tik dokumentų identifikavimu. Kai URN iš tikrųjų reiškia dokumentą, galite jį konvertuoti į URL, naudodami „rezoliuciją“. Tada dokumentą galima atsisiųsti iš URL.

URC - „Single Resource Link“

Nurodo metaduomenis apie dokumentą, o ne pačią dokumentą. URC pavyzdys yra tas, kuris nukreipia į puslapio HTML šaltinį, pavyzdžiui: view-source:http://example.com/

Duomenų URI

Vietoj to, kad juos būtų galima rasti internete arba skambinti, duomenys gali būti pateikti tiesiogiai URI. Pavyzdys būtų data:,Hello%20World .


Dažniausiai užduodami klausimai

Girdėjau, kad nebereikia nurodyti URL, kodėl?

HTML W3 specifikacijoje teigiama, kad href inkarų žyma gali turėti URI, o ne tik URL. Turėtumėte turėti galimybę naudoti URN, pvz., <a href="urn:isbn:0451450523"> . Tada jūsų naršyklė leis šį URN URL ir atsisiųs jums knygą.

Ar bet kuri naršyklė pateikia dokumentus URN dokumentams?

Ne tai, ką žinau, bet moderni interneto naršyklė įgyvendina URI duomenų schemą.

Ar skirtumas tarp URL ir URI yra susijęs su santykiniu ar absoliučiu?

Ne Tiek santykiniai, tiek absoliutūs URL yra URL (ir URI).

Skirtumas tarp URL ir URI yra susijęs su tuo, ar jis turi užklausos parametrus?

Ne Abu URL su prašymo parametrais ir be jų yra URL (ir URI).

Ar skirtumas tarp URL ir URI yra susijęs su tuo, ar jis turi fragmento identifikatorių?

Ne Abu URL su fragmentų identifikatoriais ir be jų yra URL (ir URI).

Ar skirtumas tarp URL ir URI, su kuriuo susiję simboliai yra leidžiami?

Ne URL yra apibrėžiami kaip griežti URI pogrupiai. Jei analizatorius išsprendžia simbolį URL, bet ne URI, analizatoriaus klaida. Specifikacijose išsamiai aprašomi, kurie simboliai leidžiami tose URL ir URI dalyse. Kai kurie simboliai gali būti leidžiami tik tam tikrose URL dalyse, tačiau tik simboliai nėra skirtumai tarp URL ir URI.

Bet ar W3C dabar sako, kad URL ir URI yra vienodi?

Taip W3C suprato, kad yra painiavos. Jie išleido dokumentą, kad išsiaiškintų URI , kuriame teigiama, kad terminai „URL“ ir „URI“ dabar gali būti naudojami pakaitomis (žymėti URI). Dabar netinkama griežtai suskirstyti URI skirtingiems tipams, pvz., URL, URN ir URC.

Ar URI gali būti ir URL, ir URN?

URN apibrėžimas dabar yra silpnesnis nei aukščiau. paskutiniame URI RFC sako, kad bet kuris URI gali būti URN (nepriklausomai nuo to, ar jis prasideda urn: jei jis turi „vardo savybes“. Tai yra: ji yra visuotinai unikali ir patvari net ir tada, kai išteklius nustoja egzistuoti arba jis nepasiekiamas. Pavyzdys: HTML metoduose naudojami URI, pvz., http://www.w3.org/TR/html4/strict.dtd . Šis URI ir toliau skambins HTML4 perkėlimo dokumento tipu, net jei puslapis w3.org svetainėje bus pašalintas.


2019

411
05 марта '15 в 0:51 2015-03-05 00:51 Atsakymą pateikė Stephen Ostermiller kovo 15 d. 15 val. 0:51 2015-03-05 00:51

Trumpai tariant: identifikuojamas URI, URL identifikuoja ir nustato.

Apsvarstykite konkretų Šekspyro „Romeo“ ir Džuljeta leidimą, kurio namų tinkle turite skaitmeninę kopiją.

Tekstą galite nustatyti kaip urn:isbn:0-486-27557-4 .
Tai bus URI, bet tiksliau URN *, nes jis vadina tekstą .

Tekstą taip pat galite identifikuoti kaip file://hostname/sharename/RomeoAndJuliet.pdf .
Jis taip pat bus URI, bet tiksliau URL , nes jis suranda tekstą .

* Vieno šaltinio pavadinimas

(Atminkite, kad mano pavyzdys pritaikytas iš „ Wikipedia“ )

220
31 дек. atsakymas, kurį pateikė Gregas gruodžio 31 d 2009-12-31 09:51 '10 ne 9:51 am. 2009-12-31 09:51

Tai labai gerai parašyti, bet ilgai laukti atsakymai. Čia yra skirtumas tarp „CodeIgniter“ :

URL - http://example.com/some/page.html

URI - / some / page.html

Paprasčiau tariant, URL yra pilnas būdas nurodyti bet kurį šaltinį bet kur ir gali turėti skirtingus protokolus, pvz., FTP, HTTP, SCP ir kt.

URI yra esamos srities išteklius, todėl jai reikia mažiau informacijos.

Kiekvienu atveju, kai CodeIgniter naudoja žodį URL arba URI, tai yra skirtumas, apie kurį kalbama, nors didžiojoje interneto schemoje tai nėra 100% teisinga.

121
31 дек. Atsakymą pateikė Phil Sturgeon, gruodžio 31 d. 2009-12-31 11:58 '10, 11:58, 2009-12-31 11:58

URI → Vienodas išteklių identifikatorius

  • URI - tai tekstas, kuriuo siekiama identifikuoti bet kokį šaltinį ar pavadinimą internete.
  • URI turi dvi specializacijas: URL (Uniform Resource Locator) ir URN (Uniform Resource Name).
  • Šios dvi specifikacijos naudojamos ištekliams ir pavadinimams identifikuoti.

URL → Uniform Resource Locator

  • Tai yra URI pogrupis
  • URL yra vieta ir ištekliaus ištrynimo protokolas (pvz., Atkūrimo ištekliui naudojamas HTTP protokolas)

URN → Vienodas išteklių pavadinimas

  • Tai taip pat yra URI pogrupis.
  • URN visiškai skiriasi nuo URL, nes jame nėra jokio protokolo.

Skirtumas tarp URI, URL ir URN

1) Kiekvienas URL ir URN yra URI, nes URI yra tiek URL, tiek URN viršelis.

2) URL apima, pavyzdžiui, protokolą. http: //, ftp: // kartu su vieta, kur nustatyti išteklius, pvz. http://www.blogspot.com/abc.html .

3) URN yra nedviprasmiškas būdas nustatyti išteklius. ISBN yra geriausi URN pavyzdžiai

2019

29 сент. atsakymas pateikiamas Preya 29 sep . 2016-09-29 11:06 '16 at 11:06 2016-09-29 11:06

Mažas papildymas jau paskelbtuose atsakymuose, čia yra Venn diagrama, kurioje apibendrinama teorija (iš Prateek Joshi gražaus paaiškinimo ):

2019

62
16 окт. Gustavo Mori atsakė spalio 16 dieną. 2014-10-16 20:46 '14, 20:46, 2014-10-16 20:46

Tai viena iš labiausiai painioms ir galbūt netinkamoms temoms, su kuriomis susidūriau kaip žiniatinklio profesionalas.

Kaip suprantu, URI yra kažko, kuris atitinka priimtą formatą, kuris gali apibrėžti ir unikalų kažko pavadinimą (jo tapatybę), ir jos vietos aprašymą.

Yra du pagrindiniai pogrupiai - URL, kurie apibrėžia vietą (ypač naršyklę, kurioje bandoma rasti tinklalapį) ir URN, kurie apibrėžia unikalų pavadinimą.

Aš linkęs galvoti apie URN kaip GUID afinitetą. Tai tiesiog standartizuota metodika, suteikianti unikalų daiktų pavadinimą. Kaip ir vardų erdvės deklaracijoje, kuri naudoja įmonės pavadinimą - tai ne taip, kaip yra serveryje esantis išteklius, kad jis atitiktų šią teksto eilutę - tai tiesiog unikaliai identifikuoja kažką.

Aš taip pat stengiuosi visiškai vengti termino URI ir, jei reikia, aptarti dalykus tik URL ar URN požiūriu, nes tai sukelia tiek daug painiavos. Klausimas, kurį turėtume iš tikrųjų bandyti atsakyti žmonėms, nėra tiek daug semantikos, bet kaip nustatyti, kada susiduriama su terminais, ar yra jų praktinis skirtumas, kuris pakeis požiūrį į programavimo situaciją. Pavyzdžiui, jei kas nors ištaiso mane pokalbyje ir sako: „O, tai nėra URI URL“, - žinau, kad jie yra pilni jo. Jei kas nors sako, kad „mes naudojame URN, kad nustatytume išteklius“, greičiausiai aš suprantu, kad tai unikaliai vadiname, o ne įdėti jį į serverį.

Jei išeisiu iš bazės - praneškite man!

49
01 дек. Atsakymą pateikė Kevin Lowe 01 Dec. 2011-12-01 16:07 '11 at 16:07 2011-12-01 16:07

URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

URL yra URI (kuriame taip pat yra URN) pogrupis.

Iš esmės URI yra bendras identifikatorius, kuriame URL nurodo vietą, o URN nurodo pavadinimą.

39
07 окт. Craig Wilson atsakymas, 07 spalis 2008-10-07 00:30 '08 at 0:30 2008-10-07 00:30

Kitas pavyzdys, kurį norėčiau naudoti galvodamas apie URI, yra XML dokumento atributas XML:

 <rootElement xmlns:myPrefix="com.mycompany.mynode"> <myPrefix:aNode>some text</myPrefix:aNode> </rootElement> 

Tokiu atveju com.mycompany.mynode bus URI, kuris išskirtinai identifikuoja vardų erdvę „myPrefix“ visiems elementams, kurie naudojasi mano XML dokumente. Tai NĖRA URL, nes jis naudojamas tik identifikavimui, o ne tam, kad jis būtų kažkas.

34
31 дек. Atsakymą pateikė DC gruodžio 31 d. 2009-12-31 10:38 '10, 10:38 val. 2009-12-31 10:38

Dėl sunkumų, aiškiai atskiriant URI ir URL, W3C neturi nieko bendro su URI ir URL ( http://www.w3.org/Addressing/ ).

27
31 дек. Atsakymą pateikė manuel aldana, gruodžio 31 d. 2009-12-31 15:59 '10, 15:59, 2009-12-31 15:59

Jie yra tokie patys . URI yra URL apibendrinimas. Iš pradžių URI buvo planuojama suskirstyti į URL (adresus) ir URN (vardus), tačiau tarp URL ir URI buvo nedaug skirtumų, o „http-URI“ buvo naudojamas kaip vardų erdvės, nors jie iš tikrųjų nerado jokių išteklių.

20
07 окт. Mark Cidade atsakymas 07 spalis 2008-10-07 00:28 '08 at 0:28 2008-10-07 00:28

URI yra klasės ir URN klasė. Vikipedija turi puikų straipsnį apie juos su nuorodomis į teisingą RFC rinkinį.

18
07 окт. Atsakyti André Oct 07 2008-10-07 00:30 '08 at 0:30 2008-10-07 00:30

„Wikipedia“ suteiks visą jums reikalingą informaciją. Citata iš http://en.wikipedia.org/wiki/URI :

URL yra URI, kuris, be išteklių nustatymo, suteikia galimybę atlikti ar gauti išteklių vaizdą, apibūdinantį jo pagrindinį prieigos mechanizmą arba tinklo vietą.

14
07 окт. Atsakymas Peter Boughton spalis 07 2008-10-07 00:30 '08 at 0:30 2008-10-07 00:30

Kiekvienas URL („ U niform R esource L ocator“) yra abstrakčiai kalbantis URI („ U niform R esource I dentifier“), tačiau kiekvienas URI nėra URL. Yra dar viena URI subkategorija - URN (Uniform R esource N ame), kuris yra pavadinimo šaltinis, bet nenurodo, kaip juos rasti, pvz., Mailto, naujienos ir isbn yra URI.

2019

23 дек. Atsakymas suteikiamas Premraj 23 dec. 2015-12-23 14:45 '15, 14:45 pm 2015-12-23 14:45

URL

URL yra URI specifikacija, kuri apibrėžia konkretaus šaltinio tinklo vietą. Skirtingai nei URN, URL nustato, kaip gaunamas šaltinis. Kiekvieną dieną URL naudojamas http://example.com ir kt. Tačiau URL neturi būti HTTP URL, jis gali būti ftp://example.com ir tt Per daug.

URI

URI identifikuoja išteklius pagal vietą arba pagal pavadinimą arba abu. Dažniausiai dauguma iš mūsų naudoja URI, kurie apibrėžia išteklių vietą. Tai, kad URI, mano nuomone, gali identifikuoti išteklius tiek pagal pavadinimą, tiek vietą, sukelia daug painiavos. URI turi dvi specializacijas, žinomas kaip URL ir URN.

Skirtumas tarp URL ir URI

URI yra konkretaus šaltinio identifikatorius, tačiau URL suteikia konkrečią informaciją apie šio šaltinio gavimą. URI yra URL, ir, kaip pažymėjo vienas komentatorius, dabar laikoma neteisinga naudoti URL, kai aprašomos programos. Paprastai, jei URL aprašo tiek išteklių vietą, tiek pavadinimą, vartojamas terminas yra URI. Kadangi dažniausiai daugelis iš mūsų susitinka kiekvieną dieną, URI yra teisingas terminas.

14
08 сент. Atsakymas, kurį pateikė Sujit rugsėjo 08 2012-09-08 11:17 '12 at 11:17 2012-09-08 11:17

Visų pirma, pašalinkite savo protą dėl painiavos ir paaiškinkite, ir jūs suprasite.

URI => Vieno šaltinio identifikatorius Nurodo visą vietos, išteklių pavadinimo ar išteklių pavadinimo adresą, ty.

URL => Uniform Resource Locator Suranda išteklių.

URN => Uniform Resource Name Nurodo išteklių pavadinimą

Pavyzdys

Turime adresą https://www.google.com/folder/page.html , kur

URI (vienodas išteklių identifikatorius) => https://www.google.com/folder/page.html

URL (Uniform Resource Locator) => https://www.google.com/

URN (vienodas išteklių pavadinimas) => /folder/page.html

URI => (URL + URN) arba tik URL arba tik URN

13
21 июля '17 в 20:50 2017-07-21 20:50 atsakymą pateikė vartotojo7987783 liepos 21 d. 17:20 20:50 2017-07-21 20:50

Pagal RFC 3986 URI sudaro šios dalys:

 scheme://authority/path?query 

URI aprašo protokolą, skirtą prieigai prie išteklių (kelio) ar programos (užklausos) serveryje (institucijoje).

2019

12
28 авг. atsakymą pateikė Prashanth Sams 28 rug. 2014-08-28 12:29 '14, 12:29 2014-08-28 12:29

URI identifikuoja išteklius pagal vietą arba pagal pavadinimą arba abu. Чаще всего большинство из нас используют URI, которые определяют местоположение для ресурса. Тот факт, что URI может идентифицировать ресурсы как по имени, так и по местонахождению, на мой взгляд приводит к большой путанице. URI имеет две специализации, известные как URL и URN.

URL-адрес - это спецификация URI, которая определяет сетевое расположение определенного ресурса. В отличие от URN, URL-адрес определяет способ получения ресурса. Мы используем URL-адреса каждый день в форме /ngn-wiki.ru.site/... и т.д. Но URL-адрес не должен быть URL-адресом HTTP, он может быть ftp://example.com и т.д.

12
ответ дан Swapnil 31 дек. 2009-12-31 10:51 '10, 10:51 am. 2009-12-31 10:51