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

44

J'ai lu ces pages:

Je connais les bases d'URL, URN et URI; mais peu sur leurs différences . Ce que je ne comprends pas, c'est dans une page du genre: http://www.bernzilla.com/item.php?id=100quelle partie est l'URL, l'URN et l'URI!
L'URI est partie entière mais URL et URN ??

Image de Wikipédia

Edit:
de w3c.org:

Une URL est un type d'URI qui identifie une ressource via une représentation de son mécanisme d'accès principal (par exemple, son "emplacement" du réseau), plutôt que par certains autres attributs qu'il peut avoir.

de www.damnhandy.com :

Il est maintenant considéré comme incorrect d'utiliser une URL lors de la description d'applications.

Maintenant est idun attribut? Qu'en est-il de la partie application? PHP est-il une application?

défait
la source
3
Cette question a été posée à plusieurs reprises sur Stack Overflow et a suscité beaucoup d'attention et de bonnes réponses: Quelle est la différence entre un URI et une URL?
hippietrail

Réponses:

42

Diagramme de Venn URI / URL

URL - Uniform Resource Locator

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

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:[email protected]
  • file:///home/user/file.txt
  • tel:1-888-555-5555
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (Une URL relative, utile uniquement 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 identificateurs de fragment.

URN - Nom de ressource uniforme

Identifie une ressource par un nom unique et persistant. Il commence généralement par 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 globalement unique
  • urn:publishing:book - Un espace de noms XML qui identifie le document en tant que 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 une URL par un "résolveur". Le document peut ensuite être téléchargé à partir de l'URL.

URI - Identifiant de ressource uniforme

Les URI englobent les URL, les URN et d'autres moyens d'identifier une ressource.

Un exemple d'URI qui n'est ni une URL ni un URN serait un URI de données tel que data:,Hello%20World. Ce n'est pas une URL ni un URN car l'URI contient les données. Il ne le nomme pas et ne vous dit pas non plus comment le localiser sur le réseau.

Il existe également des citations de ressources uniformes (URC) qui renvoient à des métadonnées sur un document plutôt qu'au document lui-même. Un exemple d'un URC serait un identifiant pour la visualisation du code source d'une page Web: view-source:http://example.com/. Un URC est un autre type d'URI qui n'est ni une URL ni un URN.

Questions fréquemment posées

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

La spécification W3 pour HTML indique que la hrefbalise d'ancrage peut contenir un URI, pas seulement une URL. Vous devriez être capable de mettre dans un URN tel que <a href="urn:isbn:0451450523">. Votre navigateur résoudra alors cet URN en une URL et téléchargera le livre pour vous.

Est-ce que certains navigateurs savent comment récupérer des documents par URN?

Pas que je sache, mais un navigateur Web moderne implémente le schéma d'URI de données.

La différence entre URL et URI a-t-elle quelque chose à voir avec le fait qu'elle soit relative ou absolue?

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

La différence entre l'URL et l'URI a-t-elle quelque chose à voir avec le fait qu'elle ait ou non des paramètres de requête?

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

La différence entre URL et URI a-t-elle quelque chose à voir avec le fait qu'il ait ou non un identifiant de fragment?

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

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

Oui. Le W3C a réalisé qu'il y avait beaucoup de confusion à ce sujet. Ils ont publié un document de clarification d'URI qui indique qu'il est désormais correct d'utiliser les termes URL et URI de manière interchangeable (pour désigner l'URI). Il n'est plus utile de segmenter strictement les URI en différents types tels que URL, URN et URC.

Un URI peut-il ê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. La dernière RFC sur les URI indique que n'importe quel URI peut désormais être un URN (qu'il commence ou non par urn:) à condition qu'il ait "les propriétés d'un nom". C'est-à-dire qu'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 doctypes HTML tels que http://www.w3.org/TR/html4/strict.dtd. Cet URI continuerait à nommer le doctype HTML4 transitoire même si la page du site Web w3.org était supprimée.

Stephen Ostermiller
la source
Ce qui me confond avec la clarification du W3C et la distinction URL / URI, c’est qu’en réalité, de nombreux documents de serveur Web décrivent l’URL comme la chaîne de requête entière et l’URI comme "la partie qui suit le protocole". Il fait même référence à cette partie par le nom de variable $ uri. Par exemple: nginx.com/blog/creating-nginx-rewrite-rules Ce n'est pas strictement "correct" selon les définitions du W3C, semble-t-il? Mais c'est le plus utile je pense.
Mike
1
Les URI ont été largement mal compris. Beaucoup de gens pensaient qu'un URI était une partie de l'URL, semblable à une URL relative ou suivant le protocole. Cela n’a jamais été correct, mais ces idées ont été intégrées à la documentation du serveur ou aux API de programmation assez souvent.
Stephen Ostermiller
10

Je pense que ces articles expliquent assez bien. Pour répondre à votre question - tout ceci est une URL:

http://www.bernzilla.com/item.php?id=100

Chaque morceau - http: www.bernzilla.comet ainsi de suite a son propre nom:

  • http: est le schéma
  • www est le sous-domaine
  • bernzilla.com est le domaine
  • com est le domaine de premier niveau ou TLD
  • (il pourrait y avoir un dossier ou un chemin, par exemple /dir/item.php mais ce n’est pas le cas)
  • item.php est la page ou le nom du fichier qui a une extension php
  • id = 100 est la chaîne de requête

Je peux voir, étant donné ce diagramme de Wikipedia, pourquoi vous demandez si. Ce diagramme indique qu'il existe deux types d'URI: les URL et les URN. Le bit flou au milieu correspond au moment où quelque chose peut être les deux.

Paulmorriss
la source
Merci de répondre. J'ai édité ma question. pouvez-vous regarder à nouveau?
défait le
Je ne comprends pas cette citation sur la description des applications et je ne vois pas de commentaire où quelqu'un l'indique. Je mettrai à jour ma réponse pour décrire les différentes parties.
paulmorriss
@paul tu ne veux pas dire URI dans la première ligne? id=100n'est pas un lieu , c'est un indicateur.
DisgruntledGoat
Je pense que je voulais dire URL. Avec certains sites, si vous modifiez l'identifiant, vous obtenez différentes "pages" en langage normal. Lire la définition de ressource sur wikipedia Je pense qu'une page est un exemple de ressource.
paulmorriss
7

Il n’est pas vrai que l’URL que vous mentionnez se compose d’une partie URL et d’un nom URN.

http://www.bernzilla.com/item.php?id=100 est à la fois une URL et un URI.

Fondamentalement, les URI sont un sur-ensemble d'URL et d'URN. Il existe également un certain chevauchement entre les URL et les URN.

Un URI identifie une ressource par son emplacement, son nom ou les deux.

Donc, toute URL est un URI, tout URN est un URI, mais tous les URI ne sont pas des URL.

Kris
la source