http - uris - urn vs uri




Qual é a diferença entre um URI, um URL e um URN? (20)

Identificador = Nome + Localização

Cada URL ( U niform R esource L ocator) é um URI ( U niform R esource I dentifier), abstratamente falando, mas cada URI não é um URL. Existe uma outra subcategoria de URI que é URN ( U niform R esource N ame), que é um recurso nomeado mas não especifica como localizá-los, como mailto, news, ISBN é URIs. Source

URNA:

  • URN Formato: urn:[namespace identifier]:[namespace specific string]
  • urna: e: representam por si mesmos.
  • Examples :
    • urna: uuid: 6e8bc430-9c3a-11d9-9669-0800200c9a66
    • urna: ISSN: 0167-6423
    • urn: isbn: 096139210x
    • O Amazon Resource Names (ARNs) é um recurso exclusivo da AWS.
      • Formato ARN: arn:partition:service:region:account-id:resource

URL:

  • Formato de URL: [scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
  • : // e # representam por si mesmos.
  • esquemas são https, ftp, gopher, mailto, notícias, telnet, arquivo, man, info, whatis, ldap ...
  • Exemplos:

Analogia:
Para alcançar uma pessoa: Dirigir (protocolo outros SMS, email, telefone), Endereço (nome do host outro número de telefone, emailid) e nome da pessoa (nome do objeto com um caminho relativo).

As pessoas falam sobre URLs , URIs e URNs como se fossem coisas diferentes, mas elas são as mesmas a olho nu.

Quais são as diferenças distinguíveis entre eles?


URI - Identificador Uniforme de Recursos

Os URIs são um padrão para identificar documentos usando uma sequência curta de números, letras e símbolos. Eles são definidos pelo RFC 3986 - Identificador Uniforme de Recursos (URI): Sintaxe Genérica . URLs, URNs e URCs são todos os tipos de URI.

URL - Localizador Uniforme de Recursos

Contém informações sobre como buscar um recurso 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)

As 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 de documento ( /foo/mypage.html ). URLs podem ter parâmetros de consulta e identificadores de fragmento.

URN - Nome do Recurso Uniforme

Identifica um recurso por um nome único e persistente, mas não necessariamente informa como localizá-lo na internet. Geralmente começa com o prefixo urn: Por exemplo:

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

Os URNs podem identificar ideias e conceitos. Eles não estão restritos a identificar documentos. Quando um URN representa um documento, ele pode ser traduzido em um URL por um "resolvedor". O documento pode então ser baixado do URL.

URC - citação de recurso uniforme

Aponta para metadados sobre um documento e não para o próprio documento. Um exemplo de um URC é aquele que aponta para o código-fonte HTML de uma página como: view-source:http://example.com/

URI de dados

Em vez de localizá-lo na internet ou nomeá-lo, os dados podem ser colocados diretamente em um URI. Um exemplo seria data:,Hello%20World .

perguntas frequentes

Eu ouvi dizer que eu não deveria mais dizer URL, por quê?

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

Algum navegador realmente sabe como buscar documentos pelo URN?

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

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

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

A diferença entre URL e URI tem alguma relação com parâmetros de consulta?

Não. Os dois 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. Os dois URLs com e sem identificadores de fragmentos são URLs (e URIs).

A diferença entre URL e URI tem algo a ver com quais caracteres são permitidos?

Não. As URLs são definidas como um subconjunto restrito de URIs. Se um analisador permitir um caractere em um URL, mas não em um URI, haverá um erro no analisador. As especificações são detalhadas sobre quais caracteres são permitidos em quais partes de URLs e URIs. Alguns caracteres podem ser permitidos apenas em algumas partes do URL, mas os caracteres por si só não são uma diferença entre URLs e URIs.

Mas o W3C não diz agora 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 da URI que diz que agora é aceitável usar os termos URL e URI de forma intercambiável (para significar URI). Não é mais útil segmentar estritamente os URIs em tipos diferentes, como URL, URN e URC.

Um URI pode ser um URL e um URN?

A definição de URN é agora mais solta do que o que afirmei acima. A última RFC em URIs diz que qualquer URI agora pode ser uma 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 tipos de documento HTML, como http://www.w3.org/TR/html4/strict.dtd . Esse URI continuaria a nomear o doctype de transição HTML4 mesmo se a página no site w3.org fosse excluída.


De RFC 3986 :

Um URI pode ser classificado como um localizador, um nome ou ambos. O termo "Uniform Resource Locator" (URL) refere-se ao subconjunto de URIs que, além de identificar um recurso, fornecem um meio de localizar o recurso descrevendo seu mecanismo de acesso primário (por exemplo, seu "local" de rede). O termo "Uniform Resource Name" (URN) tem sido usado historicamente para se referir a ambos os URIs sob o esquema "urn" [RFC2141], que são obrigados a permanecer globalmente únicos e persistentes mesmo quando o recurso deixa de existir ou fica indisponível, e para qualquer outro URI com as propriedades de um nome.

Então, todas as URLs são URIs (na verdade não são bem assim - veja abaixo), e todas as URNs são URIs - mas URNs e URLs são diferentes, então você não pode dizer que todos os URIs são URLs.

EDIT: eu já havia pensado que todas as URLs são URIs válidos, mas como por comentários:

Não "todas as URLs são URIs". Depende da interpretação do RFC. Por exemplo, em Java, o analisador de URI não gosta de [ ou ] e isso ocorre porque a especificação diz "não deve" e não "não deve".

Então isso turvou as águas ainda mais, infelizmente.

Se você ainda não leu a resposta de Roger Pate , aconselho que o faça também.


De acordo com o RFC 3986 , os URIs são compostos pelas seguintes partes:

scheme://authority/path?query

O URI descreve o protocolo para acessar um recurso ( caminho ) ou aplicativo ( consulta ) em um servidor ( autoridade ).

Todas as URLs são URIs e todos os URNs são URIs, mas todos os URIs não são URLs.

Por favor, consulte para mais detalhes:

Wikipedia


Em resumo: um URI identifica, um URL identifica e localiza.

Considere uma edição específica da peça de Romeu e Julieta de Shakespeare , da qual você tem uma cópia digital em sua rede doméstica.

Você pode identificar o texto como urn:isbn:0-486-27557-4 .
Isso seria um URI, mas mais especificamente um URN * porque nomeia o texto .

Você também pode identificar o texto como file://hostname/sharename/RomeoAndJuliet.pdf .
Isso também seria um URI, mas mais especificamente um URL porque localiza o texto .

* Nome do Recurso Uniforme

(Note que meu exemplo é adaptado da URI )


Embora os termos URI e URL sejam estritamente definidos, muitos usam os termos para outras coisas para as quais não estão definidos.

Vamos pegar o Apache por exemplo. Se http://example.com/foo for solicitado a partir de um servidor Apache, você terá as seguintes variáveis ​​de ambiente definidas:

  • REDIRECT_URL : /foo
  • REQUEST_URI : /foo

Com o mod_rewrite ativado, você também terá estas variáveis:

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

Esta pode ser a razão para algumas das confusões.


Este é um dos tópicos mais confusos e possivelmente irrelevantes que encontrei como profissional da web.

Pelo que entendi, um URI é uma descrição de algo, seguindo um formato aceito, que pode definir tanto o nome exclusivo (identificação) de algo quanto sua localização.

Existem dois subconjuntos básicos - URLs, que definem a localização (especialmente para um navegador que procura uma página da Web) e URNs, que definem o nome exclusivo de algo.

Eu costumo pensar em URNs como sendo semelhantes aos GUIDs. Eles são simplesmente uma metodologia padronizada para fornecer nomes exclusivos para as coisas. Como no declarativo do namespace que usa o nome de uma empresa - não é como se houvesse um recurso em um servidor em algum lugar para corresponder àquela linha de texto - ele simplesmente identifica algo de forma única.

Eu também tendem a evitar completamente o termo URI e discutir as coisas apenas em termos de URL ou URN, conforme apropriado, porque causa muita confusão. A questão que deveríamos realmente tentar responder pelas pessoas não é tanto a semântica, mas como identificar, ao encontrar os termos, se há ou não alguma diferença prática neles que mudará a abordagem de uma situação de programação. Por exemplo, se alguém me corrige na conversa e diz: "ah, isso não é um URL, é um URI". Eu sei que eles estão cheios disso. Se alguém disser "estamos usando um URN para definir o recurso", é mais provável que entendamos que estamos apenas nomeando-o exclusivamente, não localizando-o em um servidor.

Se eu estou fora da base - por favor me avise!


O URI é uma espécie de superclasse de URLs e URNs. A Wikipedia tem um URI sobre eles com links para o conjunto certo de RFCs.


URI => URI

As URLs são um subconjunto de URIs (que também contêm URNs).

Basicamente, um URI é um identificador geral, em que um URL especifica um local e um URN especifica um nome.


Um URI identifica um recurso por local ou nome ou ambos. Mais frequentemente do que não, a maioria de nós usa URIs que define um local para um recurso. O fato de que uma URI pode identificar recursos pelo nome e pelo local gerou muita confusão na minha opinião. Um URI tem duas especializações, conhecidas como URL e URN.

Uma URL é uma especialização de URI que define o local de rede de um recurso específico. Ao contrário de um URN, o URL define como o recurso pode ser obtido. Usamos URLs todos os dias na forma de http://.com , etc. Mas uma URL não precisa ser uma URL HTTP, pode ser ftp://example.com , etc.


Veja este documento . Especificamente,

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, seu "local" de rede), e não por outros atributos que ele possa ter.

Não é um termo extremamente claro, na verdade.


Eles são a mesma coisa . Um URI é uma generalização de um URL. Originalmente, os URIs eram planejados para serem divididos em URLs (endereços) e URNs (nomes), mas havia pouca diferença entre um URL e um URI, e os URIs HTTP eram usados ​​como namespaces, embora eles não localizassem nenhum recurso.


Fácil de explicar:

Vamos supor o seguinte

URI é o seu nome

URL é o seu endereço com o seu nome em ordem para se comunicar com você.

  • meu nome é Loyola

    Loyola é URI

  • meu endereço é TN, Chennai 600001.

TN, Chennai 600 001, Loyola é URL

Eu espero que você entenda,

Agora vamos ver um exemplo preciso

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

acima, você pode se comunicar com uma página chamada firstpage.html ( URI ) usando o seguinte http://www.google.com/fistpage.html ( URL ).

Portanto, o URI é um subconjunto de URL, mas não vice-versa.


Identificação e localização de URL URI ; no entanto, os localizadores também são identificadores , portanto, cada URL também é um URI, mas há URIs que não são URLs.

Exemplos

  • Roger Pate

Este é o meu nome, que é um identificador. É como um URI, mas não pode ser um URL, pois não informa nada sobre minha localização ou como entrar em contato comigo. Neste caso, também acontece de identificar pelo menos 5 outras pessoas apenas nos EUA.

  • 4914 West Bay Street, Nassau, Bahamas

Este é um localizador, que é um identificador para esse local físico. É como um URL e URI (já que todas as URLs são URIs), e também me identifica indirectly como "residente de ...". Nesse caso, isso me identifica de maneira única, mas isso mudaria se eu conseguisse um colega de quarto.

Eu digo "como" porque esses exemplos não seguem a sintaxe requerida.

Confusão popular

Da URL :

Na computação, um URL (Uniform Resource Locator) é um subconjunto do URI (Uniform Resource Identifier) ​​que especifica onde um recurso identificado está disponível e o mecanismo para recuperá-lo. No uso popular e em muitos documentos técnicos e discussões verbais, muitas vezes é incorretamente usado como sinônimo de URI , ... [ênfase minha]

Devido a essa confusão comum, muitos produtos e documentações usam incorretamente um termo em vez do outro, atribuem sua própria distinção ou os usam como sinônimos.

URNs

Meu nome, Roger Pate, poderia ser como um URN (Uniform Resource Name), exceto que são muito mais regulamentados e destinados a ser únicos no espaço e no tempo.

Como atualmente compartilho esse nome com outras pessoas, ele não é globalmente exclusivo e não seria apropriado como URN. No entanto, mesmo que nenhuma outra família usasse esse nome, recebi o nome do meu avô paterno, por isso ainda não seria único ao longo do tempo. E mesmo que não fosse esse o caso, a possibilidade de nomear meus descendentes depois de mim torna isso inadequado como URN.

Os URNs são diferentes dos URLs nessa restrição de exclusividade rígida, embora ambos compartilhem a sintaxe de URIs.


URL

Uma URL é uma especialização de URI que define o local de rede de um recurso específico. Ao contrário de um URN, o URL define como o recurso pode ser obtido. Usamos URLs todos os dias na forma de http://example.com etc. Mas um URL não precisa ser um URL HTTP, pode ser ftp://example.com etc.

URI

Um URI identifica um recurso por local ou nome ou ambos. Mais frequentemente do que não, a maioria de nós usa URIs que define um local para um recurso. O fato de que uma URI pode identificar recursos pelo nome e pelo local gerou muita confusão na minha opinião. Um URI tem duas especializações, conhecidas como URL e URN.

Diferença entre URL e URI

Um URI é um identificador de algum recurso, mas um URL fornece informações específicas para obter esse recurso. Um URI é um URL e, como um comentador apontou, agora é considerado incorreto usar URL ao descrever aplicativos. Geralmente, se o URL descreve o local e o nome de um recurso, o termo a ser usado é URI. Como geralmente é esse o caso que a maioria de nós encontra todos os dias, a URI é o termo correto.


Aqui está minha simplificação:

URN: nome do recurso exclusivo, ou seja, "o que" (por exemplo, urn: issn: 1234-5678). Isto é para ser único .. como em dois documentos diferentes podem ter a mesma urna. Um pouco como "uuid"

URL: "where" para encontrá-lo (por exemplo, https://google.com/pub?issnid=1234-5678 .. ou ftp://somesite.com/doc8.pdf )

URI: pode ser um URN ou um URL. Esta definição difusa é graças ao RFC 3986 produzido pelo W3C e pelo IETF.

A definição de URI mudou ao longo dos anos, por isso faz sentido para a maioria das pessoas ser confundida. No entanto, agora você pode se consolar com o fato de poder se referir a http://somesite.com/something como URL ou URI ... e você estará certo de qualquer forma (pelo menos por enquanto, de qualquer maneira .. .)


Um Uniform Resource Identifier (URI) é uma cadeia de caracteres que identifica um Recurso da Internet.

O URI mais comum é o URL (Uniform Resource Locator), que identifica um endereço de domínio da Internet. Outro tipo não tão comum de URI é o Universal Resource Name (URN).


Depois de ler os posts, encontro alguns comentários muito relevantes. Em suma, a confusão entre as definições de URL e URI é baseada em parte em que definição depende de qual e também do uso informal da palavra URI no desenvolvimento de software.

Por definição, URL é um subconjunto do URI [RFC2396]. URI contém URN e URL. Tanto o URI quanto o URL têm sua própria sintaxe específica que confere a eles o status de URI ou URL. URN são para identificar exclusivamente um recurso enquanto URL é para localizar um recurso. Observe que um recurso pode ter mais de um URL, mas apenas um único URN. [RFC2611]

Como desenvolvedores e programadores da web, quase sempre nos preocuparemos com URL e, portanto, URI. Agora, um URL é especificamente definido para ter todo o esquema de peças: scheme-specific-part, por exemplo, https://.com/questions . Este é um URL e também é um URI. Agora considere um link relativo incorporado na página, como ../index.html. Isso não é mais uma URL por definição. Ainda é o que é referido como uma "referência URI" [RFC2396].

Eu acredito que quando a palavra URI é usada para se referir a caminhos relativos, "URI-reference" é realmente o que está sendo pensado. Assim, informalmente, os sistemas de software usam o URI para se referir a pathing relativo e URL para o endereço absoluto. Então, nesse sentido, um caminho relativo não é mais um URL, mas ainda URI.


Não se esqueça dos URNs. URIs e URLs são ambos URNs. URLs têm uma localização:

URI: foo
URL: http://some.domain.com/foo
URL: http://some.domain.com:8080/foo
URL: ftp://some.domain.com/foo

Eles são todos URNs.


Os URIs surgiram da necessidade de identificar recursos na Web e outros recursos da Internet , como caixas eletrônicos, de maneira uniforme e coerente. Assim, é possível introduzir um novo tipo de widget: URIs para identificar recursos de widgets ou usar tel: URIs para que os links da web façam chamadas telefônicas quando invocadas.

Alguns URIs fornecem informações para localizar um recurso (como um nome de host DNS e um caminho nessa máquina), enquanto alguns são usados ​​como nomes de recursos puros. O URL é reservado para identificadores que são localizadores de recursos , incluindo URLs "http", como http://.com , que identifica a página da Web no caminho fornecido no host. Outro exemplo são os URLs 'mailto', como mailto: [email protected] , que identifica a caixa de correio no endereço fornecido.

Os URNs são URIs usados ​​como nomes de recursos puros em vez de localizadores. Por exemplo, o URI: mid: [email protected] é um URN que identifica a mensagem de email que o contém em seu campo 'Message-Id'. O URI serve para distinguir essa mensagem de qualquer outra mensagem de email. Mas ela mesma não fornece o endereço da mensagem em nenhuma loja.







rfc3986