Яка різниця між URI, URL-адресою та URN?


4362

Люди говорять про URL-адреси , URI-адреси та URN- адреси , ніби вони різні речі, але неозброєним оком вони виглядають однаково.

У чому полягають відмінності між ними?


157
URL-адреса більш конкретна, ніж URI.
mk12

30
Торкайте веб-майстрів з цього питання: в чому різниця між URI та URL
hippietrail

161
Міні-діаграма Венна:( URIs ( URLs ) )
icc97

29
Здається, існує велика плутанина щодо URI та URL, навіть тих, хто намагався відповісти на питання. Було б корисно всім побачити практичні приклади URL-адрес, які не є URI-адресами, приклади URI-адрес, які не є URL-адресами, та приклади URL-адрес та URI- адрес .
Денніс

30
Кеті: "Це ваша собака?" Боб: "Правильніше було б називати його собачим". Кеті: "Ні, він собака. Ви, сер, педант".
Yojimbo

Відповіді:


1745

Від RFC 3986 :

URI може бути додатково класифікований як локатор, ім'я або обидва. Термін "Уніфікований локатор ресурсів" (URL) відноситься до підмножини URI, які, крім ідентифікації ресурсу, забезпечують спосіб розміщення ресурсу шляхом опису його первинного механізму доступу (наприклад, його "локальне розташування"). Термін "Уніфікована назва ресурсу" (URN) історично використовувався для позначення обох URI за схемою "урна" [RFC2141] , які зобов'язані залишатися глобально унікальними та стійкими навіть тоді, коли ресурс припиняє своє існування або стає недоступним, і до будь-якого іншого URI зі властивостями імені.

Отже всі URL-адреси - це URI-адреси (насправді не зовсім - див. Нижче), а всі URN-адреси - URI-адреси, але URN-адреси та URL-адреси різні, тому ви не можете сказати, що всі URI-адреси є URL-адресами.

EDIT: Раніше я вважав, що всі URL-адреси є дійсними URI, але відповідно до коментарів:

Не "всі URL-адреси є URI-адресами". Це залежить від тлумачення RFC. Наприклад , в Java парсер URI не любить [або ]і це тому , що специфікація каже «не треба» , а не «не повинен».

Так що, на жаль, каламутить води.

Якщо ви ще не читали відповіді Роджера Пейта , я б радив це зробити також.


15
Тільки URI з схемою urn: є URN. URI може бути класичною URL-адресою, URN або просто URI, який не починається з "urn:" і не посилається на розташування ресурсу.
Марк Сідаде

18
Не " всі URL-адреси є URI-адресами ". Це залежить від тлумачення RFC. Наприклад , в Java парсер URI не любить [або ]і це тому , що специфікація каже «не треба» , а не «не повинен».
Адам Гент

5
@AdamGent: RFC 3986 1.1.3: "URI можна додатково класифікувати як локатор, ім'я чи обоє." Отже, якщо URL - це спеціальний тип URI, це означає, що кожна URL - це URI. Чи не так?
Губерт

14
@AdamGent: Це звучить як химерність реалізації Java, а не нормативна. Сам java.net.URIдокумент говорить: "кожна URL - це URI, абстрактно кажучи, але не кожен URI - це URL". А java.net.URLчи не дивні речі, такі як перевірка рівності URL-адрес шляхом вирішення імен хостів до IP-адрес (що, здається, суперечить з RFC 3986 сек. 6, в першу чергу, і розбиває віртуальні хости). Я думаю, що це означає лише, що стандартна бібліотека Java має певну непослідовність поведінки класу.
Ендрю Янке

3
@JonSkeet Можливо, просто потрібно розмежувати між стандартами та реалізаціями? Напр. "Формально, згідно з RFC, всі URL-адреси - це URI. (RFC-витяг.), Але існуючі реалізації можуть не точно відповідати специфікації, можливо, для сумісності, і можуть використовувати URL-адреси, невірні для RFC. І тому, що це складна область , деякі люди та документи можуть використовувати "URL" для позначення чогось іншого, ніж те, що визначено RFC. " На кшталт того, як більшість процедур перевірки електронної пошти не відповідають визначенням RFC.
Ендрю Янке

3840

URI S ідентифікувати і URL s місцезнаходження ; однак, локатори також є ідентифікаторами , тому кожна URL-адреса також є URI, але є URI, які не є URL-адресами.

Приклади

  • Роджер Пате

Це моє ім’я, яке є ідентифікатором. Це як URI, але не може бути URL-адресою, оскільки він нічого не говорить про моє місцезнаходження та про те, як зв’язатися зі мною. У цьому випадку також трапляється ідентифікувати принаймні 5 інших людей лише в США.

  • 4914 West Bay Street, Нассау, Багами

Це локатор, який є ідентифікатором для цього фізичного місцезнаходження. Це як URL-адреса, так і URI (оскільки всі URL-адреси є URI-адресами), а також опосередковано ідентифікує мене як "резидента ..". У цьому випадку він однозначно ідентифікує мене, але це зміниться, якщо я отримаю сусідку по кімнаті.

Я кажу "як", тому що ці приклади не відповідають необхідному синтаксису.

Популярна плутанина

З Вікіпедії :

Під час обчислень, Уніфікований локатор ресурсів (URL) - це підмножина Уніфікованого ідентифікатора ресурсів (URI), який визначає, де наявний ідентифікований ресурс, і механізм його отримання. У загальноприйнятому використанні, а також у багатьох технічних документах та словесних дискусіях він часто неправильно використовується як синонім URI , ... [наголос мій]

Через цю загальну плутанину багато продуктів і документації неправильно використовують один термін замість іншого, присвоюють власну відмінність або використовують їх синонімічно.

URN

Моє ім’я, Роджер Пейт, могло бути схожим на URN (Уніфікована назва ресурсу), за винятком тих, що є набагато більш регламентованими і мають бути унікальними як у просторі, так і в часі.

Оскільки я зараз ділюся цим ім'ям з іншими людьми, воно не є унікальним у всьому світі і не було б доречним як URN. Однак, навіть якщо жодна інша родина не використовувала цього імені, я названий на честь свого діда-батька, тому воно все одно не буде унікальним протягом часу. І навіть якщо це не було так, можливість називати моїх нащадків після мене робить це непридатним як URN.

URN відрізняються від URL-адрес цим жорстким обмеженням унікальності, навіть якщо вони обидва мають синтаксис URI.


3
URNs are different from URLs in this rigid uniqueness constraintЧи означає це, що URL-адреси не ідентифікують однозначно місцеположення?
Євген

30
Відповідь Роджера дає добрі прагматичні поради. За офіційною відповіддю я звертаюся до W3C, який опублікував " URI, URL-адреси та URN: Роз'яснення та рекомендації " в 2001 році. У двох словах, W3C говорить, що сучасний погляд полягає в тому, що все є URI. URL - це неформальне поняття, а не формальне поняття. І плутанина бере свій початок у "класичному погляді", який намагався жорстко розрізнити категорії URI (з яких URL - одна категорія).
netjeff

5
..a Уніфікований локатор ресурсів (URL) .. визначає, де доступний ідентифікований ресурс та механізм його отримання . Отже, іншими словами, немає такого поняття, як "відносна" URL-адреса?
Арн

9
Є "earth128: Edward-de-Leau / 6000000000569063853" (унікальна для мене декілька мультиварок) URN, URL чи URI?
edelwater

6
@edelwater: Я вважаю, що це урі, оскільки він тільки ідентифікує вас, але нічого не говорить про те, як дістатися до вас, якщо ви не маєте на увазі earth128 - це якесь середовище міжпланетних подорожей :)
user20358

669

URI - Уніфікований ідентифікатор ресурсу

URI - це стандарт для ідентифікації документів за допомогою короткого рядка цифр, букв та символів. Вони визначаються RFC 3986 - Уніфікований ідентифікатор ресурсу (URI): Загальний синтаксис . URL-адреси, URN та URC - це всі типи URI.

URL - Уніфікований локатор ресурсів

Містить інформацію про те, як отримати ресурс з його місцезнаходження. Наприклад:

  • 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 (Відносна URL-адреса, корисна лише в контексті іншої URL-адреси)

URL-адреси завжди починаються з протоколу ( http) і зазвичай містять інформацію, таку як мережеве ім'я хоста ( example.com) і часто шлях до документа ( /foo/mypage.html). URL-адреси можуть мати параметри запиту та ідентифікатори фрагментів.

URN - Уніфікована назва ресурсу

Ідентифікує ресурс за унікальним та стійким іменем, але не обов'язково вказує, як його знайти в Інтернеті. Зазвичай починається з префікса urn: Наприклад:

  • urn:isbn:0451450523 ідентифікувати книгу за її номером ISBN.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 глобальний унікальний ідентифікатор
  • urn:publishing:book - Простір імен XML, який ідентифікує документ як тип книги.

УРН можуть ідентифікувати ідеї та концепції. Вони не обмежуються ідентифікаційними документами. Коли URN представляє документ, він може бути переведений в URL за допомогою "резолюції". Потім документ можна завантажити з URL-адреси.

URC - Єдине цитування ресурсів

Вказує на метадані про документ, а не на сам документ. Приклад URC - це той, який вказує на вихідний HTML код сторінки, наприклад:view-source:http://example.com/

URI даних

Замість того, щоб розміщувати їх в Інтернеті чи називати їх, дані можна розміщувати безпосередньо в URI. Прикладом може бути data:,Hello%20World.


Часті запитання

Я чув, що я більше не повинен говорити URL, чому?

Специфікація W3 для HTML говорить, що hrefтег прив’язки може містити URI, а не лише URL. Ви повинні мати можливість ввести URN, наприклад <a href="urn:isbn:0451450523">. Потім ваш веб-переглядач вирішить цю URN-адресу до URL-адреси та завантажить книгу для вас.

Чи справді будь-які браузери знають, як отримати документи за допомогою URN?

Не те, що я знаю, але сучасний веб-браузер реалізує схему URI даних.

Чи різниця між URL-адресою та URI має щось спільне з тим, відносна вона чи абсолютна?

Ні. Відносні та абсолютні URL-адреси - це URL-адреси (та URI-адреси).

Чи пов’язана різниця між URL-адресою та URI, чи має параметри запиту?

Ні. Обидва URL-адреси з параметрами запиту та без них є URL-адресами (та URI-адресами).

Чи пов’язана різниця між URL-адресою та URI, чи має він ідентифікатор фрагмента?

Ні. І URL-адреси з і без ідентифікаторів фрагментів є URL-адресами (та URI-адресами).

Чи різниця між URL-адресою та URI має щось спільне з тим, які символи дозволені?

Ні. URL-адреси визначаються як суворий підмножина URI. Якщо аналізатор дозволяє символу в URL-адресі, але не в URI, є помилка в аналізаторі. Технічні характеристики детально розглядають питання про те, які символи дозволено, в яких частинах URL-адрес та URI-адрес. Деякі символи можуть бути дозволені лише в деяких частинах URL-адреси, але самі символи не є різницею між URL-адресами та URI-адресами.

Але хіба W3C зараз не говорить, що URL-адреси та URI-адреси - це одне і те ж?

Так. W3C зрозумів, що з цього приводу існує безліч плутанини. Вони видали документ про уточнення URI, в якому сказано, що зараз нормально використовувати терміни URL та URI як взаємозамінні (означати URI). Більше не корисно строго сегментувати URI на різні типи, такі як URL, URN та URC.

Чи може URI бути і URL-адресою, і URN?

Визначення URN зараз слабкіше, ніж те, про що я говорив вище. Останні RFC на URI , каже , що будь-який URI тепер може бути URN (незалежно від того, чи починається з urn:) до тих пір , як вона є «властивість імені.» Тобто: це глобально унікальний та стійкий навіть тоді, коли ресурс припиняє своє існування або стає недоступним. Приклад: URI, використовувані в HTML-доктіптах, таких як http://www.w3.org/TR/html4/strict.dtd. Цей URI продовжуватиме називати перехідний документ HTML4, навіть якщо сторінку на веб-сайті w3.org було видалено.


URI / Діаграма Венна


8
це "C: \ myfile" URI, URL чи URN? або жоден з них.
bvdb

12
Шлях до файлу не є URL-адресою або URI, якщо ви не встановите file://префікс. Хоча браузери, як правило, обробляють шляхи до файлів у форматі без URL-адреси. Mozilla публікує свої тестові справи для URL-адрес файлів .
Стівен Остерміллер

2
Дивіться розділ 1.1 RFC - "Уніфікованість надає декілька переваг. Це дозволяє використовувати різні типи ідентифікаторів ресурсів в одному контексті, навіть коли механізми, що використовуються для доступу до цих ресурсів, можуть відрізнятися. Це дозволяє рівномірно смислову інтерпретацію загальних синтаксичних умовностей для різних типів ідентифікаторів ресурсів ... "
Стівен Остерміллер

Ви згадали mailto:user@example.comяк URL-адресу, але інша відповідь нижче говорить, що це URN? Що правильно? Це і URN, і URL?
user31782

4
Ця відповідь набагато простіша для розуміння. Я бачу чіткі зображення реального прикладу URL-адрес та URN. І для тих , хто , щоб дізнатися більше про це ... danielmiessler.com/study/url-uri
розвалі

253

Підсумовуючи: URI ідентифікує, URL ідентифікує та розміщує.

Розглянемо конкретне видання п’єси Шекспіра « Ромео і Джульєтта» , про яку у вас є домашня мережа в цифровому форматі.

Ви можете визначити текст як urn:isbn:0-486-27557-4.
Це був би URI, а точніше URN *, оскільки він називає текст .

Ви також можете визначити текст як file://hostname/sharename/RomeoAndJuliet.pdf.
Це також був би URI, але точніше URL, оскільки він знаходить текст .

* Уніфікована назва ресурсу

(Зауважте, що мій приклад адаптований з Вікіпедії )


6
Корисно відзначити фактичний URN (щоб побачити, як він порівнюється з URL-адресою): urn: isbn: 0-486-27557-4
Michael Brewer-Davis

2
@Michael - Я розумію, що ISBN 0486275574також називає текст і таким чином кваліфікується як URN. Я вибираю формат, який, як я вважав, буде більш відомим читачам.
Грег

2
Тож чи було б сенсом сказати, що хеш (наприклад, SHA1) файлу може бути URN для цього файлу?
johnsimer

@johnsimer Не думайте так, оскільки ви могли мати копію одного файлу на одному комп’ютері, що призведе до того самого хешу, і тому він не є унікальним.
Dennis98

141

Це кілька дуже добре написаних, але давно відповідей. Ось різниця , що стосується CodeIgniter :

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

URI - /some/page.html

Простіше кажучи, URL - це повний спосіб ідентифікувати будь-який ресурс будь-де і може мати різні протоколи, такі як FTP, HTTP, SCP тощо.

URI - це ресурс поточного домену, тому йому потрібно менше інформації.

У кожному випадку, що CodeIgniter використовує слово URL або URI, це різниця, про яку вони говорять, хоча в грандіозній схемі Інтернету це не на 100% правильно.


10
Ця відповідь може бути надто спрощеною, але подивіться на контекст його питання. Йому буде корисніше те, що блукає про простори імен XML!
Філ Стерджон

140
Ця відповідь є не лише неправильною, але й активно оманливою. Обидва приклади є URL-адресами. Оскільки кожна URL також є URI, це означає, що обидва приклади - URI. Для того, щоб продемонструвати різницю між URI та URL-адресами, це абсолютно марно.
Йорг W Міттаг

12
Це різниця, що стосується CodeIgniter. У кожному випадку вони використовують слово URL або URI. Це різниця, про яку вони говорять. Тому в грандіозній схемі Інтернету це не на 100% правильно, але в обсязі питання щодо ОП (різниця в CodeIgniter) ця відповідь цілком правильна.
Філ Стерджон

12
Це неправильно. @ JörgWMittag здебільшого наголошується. URL-адреси - це URI, і вони "повністю кваліфіковані"; тому "URL" у цій відповіді є обом. Але /some/page.htmlце не URI. Це "відносний коефіцієнт", який є своєрідним "URI-посиланням". У поєднанні з базовим контекстом URI він може бути вирішений до URI, але сам по собі не є URI. Дивіться розділ 4.1 RFC 3986 . CodeIgniter, ймовірно, використовує неправильні терміни, і їх слід викликати; Q (як редагується в даний час) не визначено як специфічний CodeIgniter.
Ендрю Янке

37
Для майбутніх людей, які читають ці коментарі і настільки ж розгублені, як і я: Ця відповідь не була розміщена на це запитання. Це питання ніколи не мало нічого спільного з CodeIgniter. Було дублюване запитання, яке конкретно згадувало CodeIgniter, яке було закрито, і всі його відповіді перенесли на це питання. Ця відповідь була однією з тих, що перейшли від старого закритого до цього захищеного питання. Навіть так, я ця відповідь вводить в оману. Я спростував це - інші повинні робити те саме, оскільки в його новому будинку це неправильно. Автор повинен видалити його або злиття скасувати.
ArtOfWarfare

92

Перш за все, звільниться від розгубленості і прийміть це просто, і ви зрозумієте.

URI => Уніфікований ідентифікатор ресурсу Ідентифікує повну адресу ресурсу, тобто місцезнаходження, ім'я або те і інше.

URL => Уніфікований локатор ресурсу Ідентифікує місцезнаходження ресурсу.

URN => Уніфікована назва ресурсу Ідентифікує назву ресурсу

Приклад

У нас є адреса https://www.google.com/folder/page.html де,

URI (Уніфікований ідентифікатор ресурсу) => https://www.google.com/folder/page.html

URL (Уніфікований пошук ресурсів) => https://www.google.com/

URN (Уніфікована назва ресурсу) => / folder/page.html

URI => (URL + URN) або лише URL або лише URN


66

Невелике доповнення до вже опублікованих відповідей, ось схема Венна для підведення підсумків теорії (з прекрасного пояснення Пратека Джоші ):

введіть тут опис зображення

І приклад (також з веб-сайту Prateek):

введіть тут опис зображення


20
Я вважаю, що друга ілюстрація неправильна. За специфікацією url.spec.whatwg.org/#url-writing URL-адреса повинна бути записана як відносна URL-адреса або абсолютна URL-адреса, необов'язково після неї "#" та фрагмент. Отже, #postsідентифікатор фрагмента може бути частиною URL-адреси
ruvim

7
Дві ілюстрації суперечать одна одній.
patapouf_ai

53

Це одна з найбільш заплутаних і, можливо, неактуальних тем, з якими я стикався як веб-професіонал.

Як я розумію, URI - це опис чогось, що відповідає прийнятому формату, який може визначати або унікальну назву (ідентифікацію) чогось, і його місцезнаходження.

Є два основні підмножини - URL-адреси, які визначають розташування (особливо для браузера, який намагається шукати веб-сторінку) та URN, які визначають унікальну назву чогось.

Я схильний вважати, що URN подібні до GUID. Вони просто стандартизована методологія надання унікальних імен для речей. Як і в декларативному просторі імен, який використовує назву компанії - це не так, як десь на сервері сидить ресурс, який відповідає цьому рядку тексту - він просто однозначно ідентифікує щось.

Я також схильний повністю уникати терміна URI і обговорювати речі лише з точки зору URL або URN, якщо це доречно, тому що це викликає стільки плутанини. Питання, на яке ми повинні спробувати відповісти людям, полягає не стільки в семантиці, скільки в тому, як визначити, стикаючись з термінами, чи є в них якась практична різниця, яка змінить підхід до ситуації програмування. Наприклад, якщо хтось виправляє мене в розмові і каже: "о, це не URL-адреса, це URI", я знаю, що вони сповнені цього. Якщо хтось скаже, що "ми використовуємо URN для визначення ресурсу", я, швидше за все, розумію, що ми називаємо його лише однозначно, не розміщуючи його на сервері.

Якщо я буду далеко від бази - будь ласка, повідомте мене!


4
Ні, я думаю, ти маєш рацію. Семантика URI vs URL vs URL проти URI-ref тощо не є корисною для більшості розробників, лише тому, що вона призводить до безглуздих (непродуктивних, несуттєвих для прийняття рішень) дебатів. Якби redirect_urlзамість цього використовувався API Google redirect_uri, хтось би насправді хвилювався?

53

Ідентифікація = Ім'я з місцеположенням

Кожен URL ( U niform R esource L ocator) є URI ( U niform R esource I dentifier), абстрактно кажучи, але кожен URI не є URL. Існує ще одна категорія URI є URN ( U niform R esource N AME), який є іменованих ресурсом , але не вказується , як знайти їх, як MAILTO, новини, ISBN є URI. Джерело

введіть тут опис зображення

URN:

  • Формат URN: urn:[namespace identifier]:[namespace specific string]
  • urn: і: стояти за себе.
  • Приклади :
    • урна: uuid: 6e8bc430-9c3a-11d9-9669-0800200c9a66
    • урна: ISSN: 0167-6423
    • урна: isbn: 096139210x
    • Назви ресурсів Amazon (ARN) - це унікальні ідентифікаційні ресурси AWS.
      • Формат ARN: arn:partition:service:region:account-id:resource

URL:

  • Формат URL-адреси: [scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
  • :, // ,? і # стоять перед собою.
  • схеми: https, ftp, gopher, mailto, новини, telnet, файл, man, info, whatis, ldap ...
  • Приклади:

Аналогія: Дійти
до людини: керування автомобілем (протокол інших SMS, електронна пошта, телефон), адреса (ім'я хоста, інший номер телефону, emailid) та ім’я особи (ім'я об'єкта з відносним шляхом).


Незначна посвідчення: між [доменом] та [портом] має бути двокрапка. IE: example.com:1234
Рекс Шрадер

42

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

URL-адреси - це підмножина URI (які також містять URN).

В основному, URI - це загальний ідентифікатор, де URL вказує місце розташування, а URN вказує ім'я.


1
URL-адреси - не справжній підмножина URI. Ви можете зробити VAID URL, з символами [і , ]але не в URI.
Адам Гент

4
Квадратні дужки не дійсні ні в URI, ні в URL-адресах. Дивіться це запитання, яке містить багато посилань на характеристики: Чи дозволені квадратні дужки в URL-адресах? . Коли квадратні дужки з’являються в будь-якому, вони повинні бути закодовані.
Стівен Остерміллер

35

Ще один приклад, який я хотів би використовувати під час роздумів про URI, - це атрибут xmlns документа XML:

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

У цьому випадку com.mycompany.mynode буде URI, який однозначно ідентифікує простір імен "myPrefix" для всіх елементів, які використовують його в моєму документі XML. Це НЕ URL-адреса, оскільки вона використовується лише для ідентифікації, а не для того, щоб знайти щось саме по собі.


28

Через труднощі чітко розмежувати URI та URL, наскільки я пам’ятаю, W3C більше не робить різниці між URI та URL ( http://www.w3.org/Addressing/ ).


Можливо, я пропустив цю частину, але я не бачу жодної посилання в наданому посиланні на них, щоб усунути відмінність між URL-адресою та URI, лише визнаючи плутанину та бажаючи, щоб специфікації, які неправильно посилаються на URL, були замість них оновлені для посилання на URI.
Тім Готьє

27

Вони те саме . URI - це узагальнення URL-адреси. Спочатку URI-адреси планувалося розділити на URL-адреси (адреси) та URN-адреси (імена), але тоді була незначна різниця між URL-адресою та URI, а http-URI використовувались як простори імен, хоча вони фактично не знаходили жодних ресурсів.


Я думав, що це навпаки. URL-адреса посилається на конкретний об'єкт, а URI може посилатися на це або на концепцію чи на що-небудь інше.
Кріс Чарабарук

4
URL-адреса знаходить ресурс і є своєрідним URI, який ідентифікує ресурс.
Марк Сідаде

Правда лише, що вони одне і те саме, оскільки визначення URL-адреси з часом змінювалося. URL-адреси використовувались для конкретного типу URI, але через сприйняття плутанини, W3C переосмислив URL-адресу, щоб позначати URI.
Стівен Остерміллер

25

URI та URL

URI, URL, URN

Як показано на зображенні вище, тут є три чіткі компоненти. Зазвичай найкраще звертатися до джерела, обговорюючи подібні питання, тож ось виступ Тіма Бернерса-Лі та ін. ін. в RFC 3986: Уніфікований ідентифікатор ресурсу (URI): Загальний синтаксис:

Уніфікований ідентифікатор ресурсу (URI) - це компактна послідовність символів, яка ідентифікує абстрактний або фізичний ресурс.

URI може бути додатково класифікований як локатор, ім'я або обидва. Термін "Уніфікований локатор ресурсів" (URL) відноситься до підмножини URI, які, крім ідентифікації ресурсу, забезпечують спосіб розміщення ресурсу, описуючи його первинний механізм доступу (наприклад, його "локальне розташування").



17

Вікіпедія надасть всю необхідну інформацію тут. Цитуючи з http://en.wikipedia.org/wiki/URI :

URL-адреса - це URI, який, крім ідентифікації ресурсу, забезпечує засоби дії або отримання представлення ресурсу, описуючи його первинний механізм доступу або мережеве "місцезнаходження".


16

URL-адреса

URL - це спеціалізація URI, яка визначає мережеве розташування конкретного ресурсу. На відміну від URN, URL визначає, як можна отримати ресурс. Ми використовуємо URL-адреси щодня у формі http://example.comтощо. Але URL-адреса не повинна бути URL-адресою HTTP, вона може бути ftp://example.comі т.д.

URI

URI ідентифікує ресурс або за місцем розташування, або за назвою, або з обох. Найчастіше більшість із нас використовує URI, які визначають місцеположення до ресурсу. Те, що URI може ідентифікувати ресурси за назвою та місцеположенням, на мою думку, призвело до великої плутанини. URI має дві спеціалізації, відомі як URL та URN.

Різниця між URL-адресою та URI

URI - це ідентифікатор деякого ресурсу, але URL-адреса дає вам конкретну інформацію щодо отримання цього ресурсу. URI - це URL-адреса, і, як зазначав один із коментаторів, тепер вважається некоректним використовувати URL при описі програм. Як правило, якщо URL описує і місце розташування, і назву ресурсу, термін, який слід використовувати, - це URI. Оскільки це, як правило, трапляється з більшістю з нас щодня, URI - це правильний термін.


15

Відповідно до RFC 3986 , URI складаються з таких частин:

scheme://authority/path?query

URI описує протокол доступу до ресурсу ( шляху ) або програми ( запиту ) на сервері ( авторитеті ).

Введіть тут опис зображення

Усі URL-адреси - URI-адреси, а всі URN-адреси - URI-адреси, але всі URI-адреси не є URL-адресами.

Будь ласка, зверніться до деталей:

Вікіпедія


3
Це не вчить мене нічого, що не охоплено іншими відповідями, яким не менше 6 років, і які набагато повніші, і насправді намагаються пояснити, як відрізнити URI від URL-адрес.
ccjmne

2
Важливо зазначити, що зображення є діаграмою Венна, хоча воно не виглядає як типове. Я бачив, як люди намагаються інтерпретувати це як "частини URL-адреси". Ця діаграма не говорить про те, що URI починаються з URL та закінчуються URN.
Стівен Остерміллер

14

URI ідентифікує ресурс або за місцем розташування, або за назвою, або з обох. Найчастіше більшість із нас використовує URI, які визначають місцеположення до ресурсу. Те, що URI може ідентифікувати ресурси за назвою та місцеположенням, на мою думку, призвело до великої плутанини. URI має дві спеціалізації, відомі як URL та URN.

URL - це спеціалізація URI, яка визначає мережеве розташування конкретного ресурсу. На відміну від URN, URL визначає, як можна отримати ресурс. Ми використовуємо URL-адреси щодня у формі http://stackoverflow.com тощо. Але URL-адреса не повинна бути URL-адресою HTTP, вона може бути ftp://example.comтощо.


11

Хоча терміни URI та URL строго визначені, багато хто використовує терміни для інших речей, ніж вони визначені.

Візьмемо для прикладу Apache. Якщо http://example.com/foo запитується з сервера Apache, ви встановите такі змінні середовища:

  • REDIRECT_URL: /foo
  • REQUEST_URI: /foo

Якщо увімкнено mod_rewrite, у вас також будуть такі змінні:

  • REDIRECT_SCRIPT_URL: /foo
  • REDIRECT_SCRIPT_URI: http://example.com/foo
  • SCRIPT_URL: /foo
  • SCRIPT_URI: http://example.com/foo

Це може бути причиною певної плутанини.


10

Дивіться цей документ . Зокрема,

URL-адреса - це тип URI, який ідентифікує ресурс за допомогою представлення його основного механізму доступу (наприклад, його "розташування" в мережі), а не за допомогою інших атрибутів, які він може мати.

Це не дуже чіткий термін, насправді.


10

Прочитавши публікації, я знаходжу кілька дуже релевантних коментарів. Коротше кажучи, плутанина між визначеннями URL та URI базується частково на тому, яке визначення залежить від того, яке, а також неформальне використання слова URI в розробці програмного забезпечення.

За визначенням URL - це підмножина URI [RFC2396]. URI містять URN та URL. І URI, і URL мають свій специфічний синтаксис, який надає їм статус URI або URL. URN - це унікальна ідентифікація ресурсу, а URL - для пошуку ресурсу. Зауважте, що ресурс може мати більше однієї URL-адреси, але лише одну URN. [RFC2611]

Як веб-розробники та програмісти ми майже завжди будемо перейматися URL-адресою, а отже, URI. Тепер URL-адреса спеціально визначена, щоб мати всі схеми деталей: конкретна схема-частина, як, наприклад, https://stackoverflow.com/questions . Це URL-адреса, це також URI. Тепер розглянемо відносне посилання, вбудоване в сторінку, наприклад ../index.html. Це вже не URL-адреса за визначенням. Це все ще називається "URI-посиланням" [RFC2396].

Я вважаю, що коли слово URI використовується для позначення відносних шляхів, "URI-посилання" - це насправді те, про що думають. Тому неофіційно програмні системи використовують URI для позначення відносного шляху та URL-адреси для абсолютної адреси. Тож у цьому сенсі відносний шлях - це вже не URL, а все-таки URI.


10

Ось моє спрощення:

URN: унікальна назва ресурсу, тобто "що" (наприклад, urn: issn: 1234-5678). Це покликане бути унікальним. Оскільки у двох різних документах не може бути однакова урна. Трохи схожий на "uuid"

URL: "де", щоб знайти його (наприклад, https://google.com/pub?issnid=1234-5678 .. або ftp://somesite.com/doc8.pdf )

URI: може бути URN або URL. Це нечітке визначення - завдяки RFC 3986 виробництва W3C та IETF.

Визначення URI змінювалося з роками, тому для більшості людей є сенс плутати. Однак тепер ви можете потішитись тим, що ви можете посилатися на http://somesite.com/something як на URL-адресу чи на URI ... і ви будете мати рацію в будь-якому випадку (принаймні, для того, щоб у будь-якому випадку .. .)


9

Мені було цікаво те саме, і я знайшов це: http://docs.kohanaphp.com/helpers/url .

Ви можете побачити чіткий приклад за допомогою url::current()методу. Якщо у вас є ця URL-адреса : http://example.com/kohana/index.php/welcome/home.html?query=stringто використання url:current()дає вам URI, який, згідно з документацією, є: вітаю / додому


1
Ця відповідь неправильна. URI не є частиною URL-адреси. Скоріше URL-адреси - це тип URI. Крім того, посилання в цій відповіді порушено (і я не можу знайти відповідну заміну.)
Стівен Остерміллер

8

URI виникли через необхідність ідентифікувати ресурси в Інтернеті та інших ресурсах Інтернету, таких як електронні поштові скриньки, рівномірно та узгоджено. Таким чином, можна ввести новий тип віджета: URI для виявлення ресурсів віджетів або використовувати tel: URI для веб-посилань, викликаючи телефонні дзвінки, коли вони викликаються.

Деякі URI надають інформацію для пошуку ресурсу (наприклад, ім'я хоста DNS та шлях на цій машині), а деякі використовують як чисті імена ресурсів. URL зарезервований для ідентифікаторів , які є локатори ресурсів , в тому числі «HTTP» URL , такі як http://stackoverflow.com , який ідентифікує веб - сторінку , на даному шляху на хості. Інший приклад - URL-адреси 'mailto', такі як mailto: fred@mail.org , який ідентифікує поштову скриньку за вказаною адресою.

URN - це URI, які використовуються як чисті назви ресурсів, а не як локатори. Наприклад, URI: mid: 0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com - це URN, який ідентифікує повідомлення електронної пошти, що містить його в полі "Message-Id". URI служить для того, щоб відрізняти це повідомлення від будь-якого іншого повідомлення електронної пошти. Але він сам не надає адресу повідомлення в будь-якому магазині.


7

Щоб відповісти на це, я сперся на відповідь, яку я змінив на інше запитання . Хороший приклад URI - це те, як ви ідентифікуєте ресурс Amazon S3. Давай візьмемо:

s3://www-example-com/index.html [рис. 1]

яку я створив у кешованій копії

http://www.example.com/index.html [рис. 2]

в Amazon S3-US-West-2 центрі обробки даних .

Навіть якщо StackOverflow дозволить мені гіперпосилання на схему s3:// протоколів , це не допоможе вам знайти ресурс. Тому що Визначає на ресурс , рис. 1 - дійсний URI. Він також є дійсним URN, оскільки Amazon вимагає, щоб відро (їх термін для authorityчастини URI) було унікальним у центрах обробки даних. Це корисно для його розміщення, але він не вказує центр обробки даних. Тому це не працює як URL.

Отже, чим відрізняються URI, URL та URN в цьому випадку?

ПРИМІТКА: RFC 3986 визначає URI якscheme://authority/path?query#fragment


6

Легко пояснити:

Припустимо наступне

URI - ваше ім’я

URL - це ваша адреса з вашим іменем, щоб спілкуватися з вами.

  • мене звати Лойола

    Лойола - це URI

  • моя адреса - TN, Chennai 600001.

TN, Chennai 600 001, Loyola - це URL

Сподіваюся, ви зрозуміли,

Тепер давайте подивимося точний приклад

http://www.google.com/fistpage.html

у наведеному вище ви можете спілкуватися зі сторінкою, що називається firstpage.html ( URI ), використовуючи наступну http://www.google.com/fistpage.html ( URL ).

Отже, URI є підмножиною URL, але не навпаки.


4
Ця відповідь вводить в оману. Цитата з Вікіпедії "Уніфікована назва ресурсу (URN) функціонує як ім'я людини, тоді як Уніфікований локатор ресурсів (URL) нагадує адресу вулиці цієї людини. Іншими словами: URN визначає особу товару, тоді як URL-адреса забезпечує спосіб пошуку це ". Також URN та URL є URI.
Вегань Св

4

Уніфікований ідентифікатор ресурсу (URI) - це рядок символів, який ідентифікує Інтернет-ресурс.

Найпоширеніший URI - це Уніфікований локатор ресурсів (URL), який ідентифікує адресу домену в Інтернеті. Іншим, не таким поширеним типом URI, є Універсальна назва ресурсу (URN).


4

Я знайшов:


Уніфікований ідентифікатор ресурсу (URI) являє собою щось велике зображення. Ви можете розділити URI / URI, можна класифікувати як локатори (уніфіковані локатори ресурсів - URL), або як імена (однакова назва ресурсу-URN), або як обидва. Таким чином, URN функціонує як ім’я людини та URL-адреса, яка зображує адресу цієї людини. Якщо коротко розповісти, URN визначає ідентичність елемента, тоді як URL-адреса визначає спосіб його пошуку, нарешті, інкапсуляція цих двох понять - це URI


2

Найкращий (технічний) підсумок imo - це цей

IRI, URI, URL, URN та їх відмінності від Яна Мартіна Кіля:

IRI, URI, URL, URN та їх відмінності

Усі, хто має стосунки до семантичної мережі, неодноразово стикаються з термінами IRI , URI , URL та URN . Тим не менш, я часто зауважую, що існує певна плутанина щодо їх точного значення. І, звичайно, інші помітили це також (див., Наприклад, RFC3305 або пошук в Google). Якщо чесно, я навіть спочатку збентежився. Але насправді питання не таке складне. Давайте подивимося на визначення згаданих термінів, щоб побачити, які відмінності:

URI

Уніфікований ідентифікатор ресурсу являє собою компактну послідовність символів , яка визначає абстрактний або фізичний ресурс. Набір символів обмежено US-ASCII, виключаючи деякі зарезервовані символи. Символи поза набором дозволених символів можуть бути представлені за допомогою Percent-Encoding. URI може використовуватися в якості локатора, імені або обох. Якщо URI є локатором, він описує первинний механізм доступу до ресурсу. Якщо URI - це ім'я, він ідентифікує ресурс, даючи йому унікальне ім'я. Точні характеристики синтаксису та семантики URI залежать від використовуваної схеми, визначеної символами перед першою двокрапкою. [RFC3986]

URN

Рівномірний Ім'я ресурсу є URI , в схемі урни призначені для використання в якості постійного, незалежні від розташування, ідентифікатор ресурсу. Історично цей термін також стосувався будь-якого URI. [RFC3986] URN складається з ідентифікатора простору імен (NID) та конкретного рядка простору імен (NSS): urn :: Синтаксис та семантика NSS є специфічними для кожного NID. Поряд із зареєстрованими NID, існує ще кілька NID, які не пройшли офіційний процес реєстрації. [RFC2141]

URL-адреса

Уніфікований покажчик інформаційного ресурсу є URI , який, на додаток до ідентифікації ресурсу, забезпечує засіб визначення місця розташування ресурсу шляхом опису основного механізму доступу [RFC3986]. Оскільки немає точного визначення URL за допомогою набору схем, "URL - корисна, але неформальна концепція", яка зазвичай посилається на підмножину URI, які не містять URN [RFC3305].

IRI

Інтернаціоналізований ідентифікатор ресурсу визначається аналогічно з URI, але набір символів поширюється на Character Set Універсальний кодований. Тому він може містити будь-які латинські та не латинські символи, крім зарезервованих символів. Замість розширення визначення URI термін IRI був введений для чіткого розмежування та уникнення несумісності. IRI призначені для заміни URI для виявлення ресурсів у ситуаціях, коли підтримується універсальний кодований набір символів. За визначенням, кожен URI - це IRI. Крім того, існує визначене сюрєктивне відображення IRI на URI: Кожен IRI може бути відображений точно в один URI, але різні IRI можуть відображатися в одному URI. Отже, перетворення назад з URI в IRI може не спричинити початковий IRI. [RFC3987]

Підсумовуючи, можна сказати:

IRI is a superset of URI (IRI ⊃ URI)
URI is a superset of URL (URI ⊃ URL)
URI is a superset of URN (URI ⊃ URN)
URL and URN are disjoint (URL ∩ URN = ∅)

Висновки для семантичних веб-випусків

RDF явно дозволяє використовувати IRI для іменування об'єктів [RFC3987]. Це означає, що ми можемо використовувати майже кожен символ у назвах юридичних осіб. З іншого боку, нам часто доводиться мати справу з раннім державним програмним забезпеченням. Таким чином, навряд чи виникнуть проблеми із використанням символів, що не належать до ASCII. Тому я пропоную уникати імен, що не мають URI, для юридичних осіб і рекомендую використовувати http URI [LINKED-DATA]. Якщо коротко сказати: використовуйте лише URL-адреси, щоб називати свої організації. Звичайно, ми можемо посилатися на існуючі сутності, названі URN. Однак нам слід уникати новостворених ідентифікаторів такого типу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.