Question Quelle est la différence entre un URI, une URL et un URN?


Les gens parlent de URLs, URIle sable URNEs comme si elles sont différentes, mais elles se ressemblent à l'œil nu.

Quelles sont les différences discernables entre eux?


3704
2017-10-06 21:26


origine


Réponses:


De RFC 3986:

Un URI peut être classé en tant que localisateur, nom ou les deux. le      Le terme "Uniform Resource Locator" (URL) fait référence au sous-ensemble des URI      que, en plus d'identifier une ressource, fournir un moyen de      localiser la ressource en décrivant son mécanisme d'accès principal      (par exemple, son "emplacement" de réseau). Le terme "nom de ressource uniforme"      (URN) a été utilisé historiquement pour désigner les deux URI sous la      "urn" schéma [RFC2141], qui sont tenus de rester globalement unique      et persistant même lorsque la ressource cesse d'exister ou devient      indisponible, et à tout autre URI avec les propriétés d'un nom.

Donc toutes les URL sont des URI (en fait pas tout à fait - voir ci-dessous), et tous les URN sont des URI - mais les URN et les URL sont différents, donc vous ne pouvez pas dire que tous les URI sont des URL.

EDIT: J'avais précédemment pensé que toutes les URL sont des URI valides, mais selon les commentaires:

ne pas "toutes les URL sont des URI". Cela dépend de l'interprétation de la RFC. Par exemple en Java l'analyseur URI n'aime pas [ ou ] et c'est parce que la spécification dit "ne devrait pas" et non "ne doit pas".

Alors que les eaux se foutent plus loin, malheureusement.

Si vous n'avez pas déjà lu La réponse de Roger Pate, Je conseillerais de le faire aussi bien.


1515
2017-10-06 21:29



URIs identifier et URLs localiser; cependant, les localisateurs sont également des identifiants, donc chaque URL est aussi un URI, mais il y a des URI qui ne sont pas des URL.

Exemples

  • Roger Pate

C'est mon nom, qui est un identifiant. C'est comme un URI, mais ne peut pas être une URL, car il ne vous dit rien sur mon emplacement ou comment me contacter. Dans ce cas, il arrive également d'identifier au moins 5 autres personnes aux États-Unis seulement.

  • 4914 West Bay Street, Nassau, Bahamas

C'est un localisateur, qui est un identifiant pour cet emplacement physique. C'est comme une URL et un URI (puisque toutes les URL sont des URI), et aussi m'identifie indirectement comme "résident de ..". Dans ce cas, il m'identifie uniquement, mais cela changerait si je recevais un colocataire.

Je dis "j'aime" parce que ces exemples ne suivent pas la syntaxe requise.

Confusion populaire

De Wikipédia:

En informatique, un URL (Uniform Resource Locator) est un sous-ensemble de l'URI (Uniform Resource Identifier) ​​qui spécifie où une ressource identifiée est disponible et le mécanisme pour la récupérer. Dans l'usage courant et dans de nombreux documents techniques et discussions verbales, il est souvent incorrectement utilisé comme synonyme d'URI, ... [soulignement le mien]

En raison de cette confusion commune, de nombreux produits et documents utilisent incorrectement un terme plutôt que l'autre, assignent leur propre distinction ou les utilisent de manière synonyme.

URN

Mon nom, Roger Pate, pourrait être comme un URNE (Nom de la ressource uniforme), sauf ceux beaucoup plus réglementé et destiné à être unique à travers tous les deux l'espace et le temps.

Parce que je partage actuellement ce nom avec d'autres personnes, ce n'est pas unique au monde et ne serait pas approprié comme un URN. Cependant, même si aucune autre famille n'utilise ce nom, je suis nommé d'après mon grand-père paternel, ce qui ne serait donc pas unique dans le temps. Et même si cette Ce n'était pas le cas, la possibilité de nommer mes descendants après moi rendrait cela inadapté comme URN.

Les URN sont différents des URL dans cette contrainte d'unicité rigide, même s'ils partagent tous les deux la syntaxe des URI.


3524
2017-12-31 06:32



URI - Identificateur de ressource uniforme

Les URI sont une norme pour identifier les documents en utilisant une courte chaîne de chiffres, de lettres et de symboles. Ils sont définis par RFC 3986 - Uniform Resource Identifier (URI): syntaxe générique. Les URL, les URN et les URC sont tous les types de l'URI.

URL - Localisateur de ressources uniforme

Contient des informations sur la façon d'extraire une ressource à partir de son emplacement. Par exemple:

  • 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 (Une URL relative, uniquement utile dans le contexte d'une autre URL)

Les URL commencent toujours par un protocole (http) et contiennent généralement des informations telles que le nom d'hôte du réseau (example.com) et souvent un chemin de document (/foo/mypage.html). Les URL peuvent avoir des paramètres de requête et des identifiants de fragment.

URN - Nom de ressource uniforme

Identifie une ressource par un nom unique et persistant, mais ne vous indique pas nécessairement comment le localiser sur Internet. Il commence généralement avec le préfixe urn:  Par exemple:

  • urn:isbn:0451450523 identifier un livre par son numéro ISBN.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 un identifiant global unique
  • urn:publishing:book - Un espace de noms XML qui identifie le document comme un type de livre.

Les URN peuvent identifier des idées et des concepts. Ils ne sont pas limités aux documents d'identification. Lorsqu'un URN représente un document, il peut être traduit en URL par un "resolver". Le document peut ensuite être téléchargé à partir de l'URL.

URC - Citation uniforme des ressources

Pointe sur les métadonnées d'un document plutôt que sur le document lui-même. Un exemple de URC est celui qui pointe vers le code source HTML d'une page comme: view-source:http://example.com/

URI de données

Plutôt que de le localiser sur Internet ou de le nommer, les données peuvent être placées directement dans un URI. Un exemple serait data:,Hello%20World.


Questions fréquemment posées

J'ai entendu dire que je ne devrais plus dire URL, pourquoi?

La spécification W3 pour HTML dit que le href d'une étiquette d'ancrage peut contenir un URI, pas seulement une URL. Vous devriez être capable de mettre un URN tel que <a href="urn:isbn:0451450523">. Votre navigateur va alors résoudre ce URN à une URL et télécharger le livre pour vous.

Est-ce que les navigateurs savent réellement comment extraire les documents par URN?

Pas que je sache, mais le navigateur Web moderne met en œuvre le schéma d'URI de données.

Est-ce que la différence entre l'URL et l'URI a quelque chose à voir avec le fait qu'elle soit relative ou absolue?

Non. Les URL relatives et absolues sont des URL (et des URI).

Est-ce que la différence entre l'URL et l'URI a quelque chose à voir avec les paramètres de requête?

Non. Les URL avec et sans paramètres de requête sont des URL (et des URI).

Est-ce que la différence entre l'URL et l'URI a quelque chose à voir avec un identifiant de fragment?

Non. Les URL avec et sans identifiants de fragment sont des URL (et des URI).

Est-ce que la différence entre l'URL et l'URI a quelque chose à voir avec les caractères autorisés?

Non. Les URL sont définies comme un sous-ensemble strict d'URI. Si un analyseur autorise un caractère dans une URL mais pas dans une URI, il y a un bogue dans l'analyseur. Les spécifications détaillent les caractères autorisés dans les parties d'URL et d'URI. Certains caractères peuvent être autorisés uniquement dans certaines parties de l'URL, mais seuls les caractères ne sont pas une différence entre les URL et les URI.

Mais le W3C ne dit-il pas que les URL et les URI sont la même chose?

Oui. Le W3C s'est rendu compte qu'il y avait une tonne de confusion à ce sujet. Ils ont publié un Document de clarification URI cela dit qu'il est maintenant OK d'utiliser les termes URL et URI de façon interchangeable (pour signifier URI). Il n'est plus utile de segmenter strictement les URI en différents types tels que l'URL, l'URN et l'URC.

Une URI peut-elle être à la fois une URL et un URN?

La définition d'URN est maintenant plus souple que ce que j'ai indiqué ci-dessus. le dernier RFC sur les URI dit que n'importe quel URI peut maintenant être un URN (indépendamment du fait qu'il commence par urn:) tant qu'il a "les propriétés d'un nom". C'est-à-dire: Il est globalement unique et persistant même lorsque la ressource cesse d'exister ou devient indisponible. Un exemple: Les URI utilisés dans les types de documents HTML tels que http://www.w3.org/TR/html4/strict.dtd. Cet URI continuera à nommer le doctype de transition HTML4 même si la page du site Web w3.org a été supprimée.


URI/URL Venn Diagram


474
2018-03-04 21:51



En résumé: un URI identifie, une URL identifie et localise.

Considérons une édition spécifique de la pièce de Shakespeare Roméo et Juliette, dont vous avez une copie numérique sur votre réseau domestique.

Vous pourriez identifier le texte comme urn:isbn:0-486-27557-4.
Ce serait un URI, mais plus précisément un URNE* parce qu'il nomme le texte.

Vous pouvez également identifier le texte comme file://hostname/sharename/RomeoAndJuliet.pdf.
Ce serait aussi un URI, mais plus spécifiquement un URL parce qu'il localise le texte.

* Nom de la ressource uniforme

(Notez que mon exemple est adapté de Wikipédia)


233
2017-12-31 06:51



Ce sont des réponses très bien écrites mais longues. Voici la différence en ce qui concerne CodeIgniter:

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

URI - /some/page.html

En d'autres termes, l'URL est le moyen complet d'identifier n'importe quelle ressource n'importe où et peut avoir différents protocoles comme FTP, HTTP, SCP, etc.

URI est une ressource sur le domaine actuel, il a donc besoin de moins d'informations à trouver.

Dans tous les cas où CodeIgniter utilise le mot URL ou URI, c'est la différence dont ils parlent, même si dans le grand schéma du web, ce n'est pas 100% correct.


124
2017-12-31 08:58



Un petit ajout aux réponses déjà postées, voici un diagramme de Venn pour résumer la théorie (de la belle de Prateek Joshi explication):

enter image description here

Et un exemple (également sur le site de Prateek):

enter image description here


64
2017-10-16 17:46



C'est l'un des sujets les plus déroutants et peut-être non pertinents que j'ai rencontrés en tant que professionnel du web.

Si je comprends bien, un URI est une description de quelque chose, suivant un format accepté, qui peut définir à la fois le nom unique (identification) de quelque chose et son emplacement.

Il existe deux sous-ensembles de base: les URL, qui définissent l'emplacement (en particulier pour un navigateur qui tente de rechercher une page Web) et les URN, qui définissent le nom unique de quelque chose.

J'ai tendance à penser que les URN sont similaires aux GUID. Ils sont simplement une méthodologie normalisée pour fournir des noms uniques pour les choses. Comme dans le namespace déclaratif qui utilise le nom d'une entreprise - ce n'est pas comme si une ressource se trouvait sur un serveur quelque part pour correspondre à cette ligne de texte - il identifie simplement quelque chose.

J'ai aussi tendance à complètement éviter le terme URI et à ne discuter que des choses en termes d'URL ou d'URN, car cela cause beaucoup de confusion. La question que nous devrions vraiment essayer de répondre aux gens n'est pas tellement la sémantique, mais comment identifier quand rencontrer les termes s'il y a ou non une différence pratique qui va changer l'approche d'une situation de programmation. Par exemple, si quelqu'un me corrige dans une conversation et dit «oh, ce n'est pas une URL c'est un URI», je sais qu'ils en sont pleins. Si quelqu'un dit "nous utilisons un URN pour définir la ressource", je suis plus susceptible de comprendre que nous ne le nommons que de manière unique, et non pas le localiser sur un serveur.

Si je suis loin de la base - s'il vous plaît faites le moi savoir!


52
2017-12-01 13:07



Tout d'abord sortir votre esprit de la confusion et prendre les choses simples et vous comprendrez.

URI => Identificateur de ressource uniforme Identifie une adresse complète de l'emplacement i-e de la ressource, son nom ou les deux.

URL => Localisateur de ressources uniforme Identifie l'emplacement de la ressource.

URN => Nom de ressource uniforme Identifie le nom de la ressource

Exemple

Nous avons une adresse https://www.google.com/folder/page.html où,

URI (Uniform Resource Identifier) ​​=> https://www.google.com/folder/page.html

URL (localisateur de ressources uniformes) => https://www.google.com/

URN (nom de ressource uniforme) => /folder/page.html

URI => (URL + URN) ou URL seulement ou URN seulement


44
2017-07-21 17:50



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

Les URL sont un sous-ensemble d'URI (qui contiennent également des URN).

Fondamentalement, un URI est un identifiant général, où une URL spécifie un emplacement et un URN spécifie un nom.


42
2017-10-06 21:30