Qual é a diferença entre um URI e um URL?

44

Eu li estas páginas:

Eu sei básico sobre URL, URN e URI; mas pouco em suas diferenças . O que não consigo entender é em uma página como: http://www.bernzilla.com/item.php?id=100qual parte é URL, URN e URI!
URI é parte inteira, mas URL e URN ??

Imagem da wikipedia

Edit:
de w3c.org:

Uma URL é um tipo de URI que identifica um recurso por meio de uma representação de seu mecanismo de acesso primário (por exemplo, sua "localização" da rede)), e não por outros atributos que possa ter.

de www.damnhandy.com :

Agora, é considerado incorreto usar o URL ao descrever aplicativos.

Agora é idum atributo? E a parte da aplicação? PHP é uma aplicação?

desfeito
fonte
3
Esta pergunta foi feita no Stack Overflow algumas vezes e recebeu muita atenção e boas respostas: Qual é a diferença entre um URI e um URL?
hippietrail

Respostas:

42

Diagrama de Venn URI / URL

URL - Localizador uniforme de recursos

Contém informações sobre como buscar um recurso a partir de sua localização. Por exemplo:

  • 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 (Um URL relativo, útil apenas no contexto de outro URL)

Os URLs sempre começam com um protocolo ( http) e geralmente contêm informações como o nome do host da rede ( example.com) e geralmente um caminho do documento ( /foo/mypage.html). Os URLs podem ter parâmetros de consulta e identificadores de fragmento.

URN - Nome Uniforme do Recurso

Identifica um recurso por um nome exclusivo e persistente. Geralmente começa com o prefixo urn: Por exemplo:

  • urn:isbn:0451450523 para identificar um livro pelo seu número de ISBN.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 um identificador globalmente exclusivo
  • urn:publishing:book - Um espaço para nome XML que identifica o documento como um tipo de livro.

URNs podem identificar idéias e conceitos. Eles não estão restritos à identificação de documentos. Quando um URN representa um documento, ele pode ser traduzido em um URL por um "resolvedor". O documento pode ser baixado do URL.

URI - Identificador Uniforme de Recursos

Os URIs abrangem URLs, URNs e outras maneiras de identificar um recurso.

Um exemplo de um URI que não é um URL nem um URN seria um URI de dados como data:,Hello%20World. Não é um URL nem um URN porque o URI contém os dados. Ele não o nomeia nem informa como localizá-lo na rede.

Também existem citações uniformes de recursos (URCs) que apontam para metadados sobre um documento e não para o próprio documento. Um exemplo de um URC seria um identificador para visualizar o código-fonte de uma página web: view-source:http://example.com/. Um URC é outro tipo de URI que não é URL nem URN.

perguntas frequentes

Ouvi dizer que não deveria mais dizer URL, por quê?

A especificação W3 para HTML diz que a hrefmarca de uma âncora pode conter um URI, não apenas um URL. Você deve conseguir inserir um URN como <a href="urn:isbn:0451450523">. Seu navegador resolveria esse URN para um URL e baixaria o livro para você.

Algum navegador sabe como buscar documentos pelo URN?

Não que eu saiba, mas o navegador da Web moderno implementa o esquema de URI de dados.

A diferença entre URL e URI tem algo a ver com se é relativa ou absoluta?

Não. Os URLs relativos e absolutos são URLs (e URIs).

A diferença entre URL e URI tem algo a ver com o fato de ter parâmetros de consulta?

Não. Ambos os URLs com e sem parâmetros de consulta são URLs (e URIs).

A diferença entre URL e URI tem algo a ver com o fato de ter um identificador de fragmento?

Não. Ambos os URLs com e sem identificadores de fragmento são URLs (e URIs).

Mas o W3C agora não diz que URLs e URIs são a mesma coisa?

Sim. O W3C percebeu que há muita confusão sobre isso. Eles emitiram um documento de esclarecimento de URI que diz que agora não há problema em usar os termos URL e URI de forma intercambiável (para significar URI). Não é mais útil segmentar estritamente URIs em diferentes tipos, como URL, URN e URC.

Um URI pode ser um URL e um URN?

A definição de URN agora é mais flexível do que eu afirmei acima. A RFC mais recente nos URIs diz que qualquer URI agora pode ser um URN (independentemente de começar com urn:) desde que tenha "as propriedades de um nome". Ou seja: é globalmente único e persistente, mesmo quando o recurso deixa de existir ou fica indisponível. Um exemplo: os URIs usados ​​em doctypes HTML, como http://www.w3.org/TR/html4/strict.dtd. Esse URI continuaria nomeando o tipo de documento de transição HTML4, mesmo que a página no site w3.org fosse excluída.

Stephen Ostermiller
fonte
O que me confunde sobre o esclarecimento do W3C e a distinção URL / URI é que, na verdade, muitos documentos do servidor da web descrevem o URL como a string de solicitação inteira e o URI como "a parte que segue o protocolo". Ele ainda faz referência a essa parte pelo nome da variável $ uri. Por exemplo: nginx.com/blog/creating-nginx-rewrite-rules Isso não é estritamente "correto" pelas definições do W3C, parece? Mas é o mais útil que eu acho.
Mike5
1
URIs foram amplamente mal compreendidos. Muitas pessoas pensaram que um URI era uma parte da URL, como uma URL relativa, ou seguindo o protocolo. Isso nunca foi correto, mas essas idéias chegaram à documentação do servidor ou à programação de APIs com bastante frequência.
Stephen Ostermiller
10

Eu acho que esses artigos explicam muito bem. Para responder sua pergunta - tudo isso é um URL:

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

Cada parte - http: www.bernzilla.come assim por diante tem seu próprio nome:

  • http: é o esquema
  • www é o subdomínio
  • bernzilla.com é o domínio
  • com é o domínio de nível superior ou o TLD
  • (pode haver uma pasta ou caminho lá, por exemplo, /dir/item.php, mas não existe)
  • item.php é a página ou o nome do arquivo que possui uma extensão php
  • id = 100 é a string de consulta

Eu posso ver, dado esse diagrama da wikipedia, por que você está perguntando? Esse diagrama está dizendo que existem dois tipos de URI - URLs e URNs, e o bit difuso no meio é quando algo pode ser ambos.

paulmorriss
fonte
Obrigado pela resposta. Eu editei minha pergunta. você pode olhar de novo?
desfeito
Eu não entendo essa citação sobre a descrição de aplicativos e não consigo ver um comentário onde alguém aponta isso. Vou atualizar minha resposta para descrever as partes separadas.
paulmorriss 02/09
@paul, você não quer dizer URI na primeira linha? id=100não é um local , é um indicador.
usar o seguinte
Eu acho que quis dizer URL. Em alguns sites, se você alterar o ID, obtém "páginas" diferentes em linguagem normal. Lendo a definição de recurso na Wikipedia, acho que uma página é um exemplo de recurso.
paulmorriss 7/09/11
7

Não é o caso de que o URL mencionado seja composto de uma parte URL e URN.

http://www.bernzilla.com/item.php?id=100 é um URL e um URI.

Basicamente, os URIs são um superconjunto de URLs e de URNs. Há alguma sobreposição entre URLs e URNs também.

Um URI identifica um recurso por local ou nome ou ambos.

Portanto, qualquer URL é um URI, qualquer URN é um URI, mas nem todo URI é um URL.

Kris
fonte