http - entre - uri url urn
¿Cuál es la diferencia entre un URI, una URL y una URN? (30)
Identificador = Nombre + Ubicación
De manera abstracta, cada URL (identificador de la fuente de recursos de China) es un URI (dentificador de la fuente de recursos de China), de manera abstracta, pero cada URI no es una URL. Hay otra subcategoría de URI es URN ( U niforme R esource N ame), que es un recurso con nombre, pero no especifica cómo ubicarlos, como mailto, news, ISBN es URIs. Source
URNA:
- Formato URN:
urn:[namespace identifier]:[namespace specific string]
- Urna: y: defienden por sí mismos.
- Examples :
- urna: uuid: 6e8bc430-9c3a-11d9-9669-0800200c9a66
- Urna: ISSN: 0167-6423
- Urna: Isbn: 096139210x
- Los nombres de recursos de Amazon (ARN) son una identificación única de los recursos de AWS.
- Formato de ARN:
arn:partition:service:region:account-id:resource
- Formato de ARN:
URL:
- Formato de URL:
[scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
- :, // ,? y # defender por sí mismos.
- los esquemas son https, ftp, gopher, mailto, news, telnet, file, man, info, whatis, ldap ...
- Ejemplos:
- http://ip_server/path?query
- ftp://ip_server/path
- mailto: dirección de correo electrónico
- noticias: nombre de grupo de noticias
- telnet: // ip_server /
- archivo: // ip_server / path_segments
- ldap: // hostport / dn? attributes? scope? filter? extensions
Analogía:
Para comunicarse con una persona: Conducción (protocolo de otros SMS, correo electrónico, teléfono), Dirección (nombre de host otro número de teléfono, correo electrónico) y nombre de la persona (nombre del objeto con una ruta relativa).
La gente habla de URL s, URI s y URN s como si fueran cosas diferentes, pero parecen iguales a simple vista.
¿Cuáles son las diferencias distinguibles entre ellos?
URI - Identificador uniforme de recursos
Los URI son un estándar para identificar documentos usando una cadena corta de números, letras y símbolos. Están definidos por RFC 3986 - Identificador uniforme de recursos (URI): sintaxis genérica . Las URL, URN y URC son todos los tipos de URI.
URL - Localizador uniforme de recursos
Contiene información sobre cómo obtener un recurso desde su ubicación. Por ejemplo:
-
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
(Una URL relativa, solo útil en el contexto de otra URL)
Las URL siempre comienzan con un protocolo ( http
) y generalmente contienen información como el nombre de host de la red ( example.com
) y, a menudo, una ruta de documentos ( /foo/mypage.html
). Las URL pueden tener parámetros de consulta e identificadores de fragmentos.
URN - Nombre del recurso uniforme
Identifica un recurso por un nombre único y persistente, pero no necesariamente le dice cómo ubicarlo en Internet. Generalmente comienza con el prefijo urn:
Por ejemplo:
-
urn:isbn:0451450523
para identificar un libro por su número de ISBN. -
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
un identificador único global -
urn:publishing:book
- Un espacio de nombres XML que identifica el documento como un tipo de libro.
Las URN pueden identificar ideas y conceptos. No están restringidos a la identificación de documentos. Cuando una URN representa un documento, se puede traducir a una URL mediante un "resolutor". El documento se puede descargar desde la URL.
URC - Citación uniforme de recursos
Apunta a los metadatos sobre un documento en lugar de al documento en sí. Un ejemplo de un URC es uno que apunta al código fuente HTML de una página como: view-source:http://example.com/
URI de datos
En lugar de ubicarlo en Internet, o nombrarlo, los datos se pueden colocar directamente en un URI. Un ejemplo serían los data:,Hello%20World
.
Preguntas frecuentes
He oído que ya no debería decir URL, ¿por qué?
La especificación W3 para HTML dice que la href
de una etiqueta de anclaje puede contener un URI, no solo una URL. Debería poder poner una URN como <a href="urn:isbn:0451450523">
. Su navegador luego resolvería esa URN a una URL y descargaría el libro por usted.
¿Alguno de los navegadores realmente sabe cómo obtener documentos por URN?
No que yo sepa, pero el navegador web moderno implementa el esquema de URI de datos.
¿La diferencia entre la URL y la URI tiene algo que ver con que sea relativa o absoluta?
No. Tanto las URL relativas como las absolutas son URL (y URI).
¿La diferencia entre URL y URI tiene algo que ver con si tiene parámetros de consulta?
No. Ambos URL con y sin parámetros de consulta son URL (y URI).
¿La diferencia entre URL y URI tiene algo que ver con si tiene un identificador de fragmento?
No. Ambas URL con y sin identificadores de fragmentos son URL (y URI).
¿La diferencia entre URL y URI tiene algo que ver con qué caracteres están permitidos?
No. Las URL se definen como un subconjunto estricto de URI. Si un analizador permite un carácter en una URL pero no en un URI, hay un error en el analizador. Las especificaciones entran en gran detalle sobre qué caracteres están permitidos en qué partes de las URL y los URI. Algunos caracteres pueden estar permitidos solo en algunas partes de la URL, pero los caracteres solos no son una diferencia entre las URL y los URI.
Pero, ¿el W3C no dice ahora que las URL y las URI son lo mismo?
Sí. El W3C se dio cuenta de que hay un montón de confusión sobre esto. Emitieron un documento de aclaración de URI que dice que ahora está bien usar los términos URL y URI indistintamente (que significa URI). Ya no es útil segmentar estrictamente los URI en diferentes tipos, como URL, URN y URC.
¿Un URI puede ser tanto una URL como un URN?
La definición de URN ahora es más flexible de lo que dije anteriormente. El último RFC en URI dice que cualquier URI ahora puede ser un URN (independientemente de si comienza con urn:
siempre que tenga "las propiedades de un nombre". Es decir: es globalmente único y persistente incluso cuando el recurso deja de existir o deja de estar disponible. Un ejemplo: los URI utilizados en los tipos de documento HTML, como http://www.w3.org/TR/html4/strict.dtd
. Ese URI continuaría nombrando el tipo de documento de transición HTML4 incluso si se eliminara la página en el sitio web w3.org.
Aunque los términos URI y URL están estrictamente definidos, muchos usan los términos para otras cosas para las que están definidos.
Tomemos Apache por ejemplo. Si se solicita http://example.com/foo desde un servidor Apache, tendrá configuradas las siguientes variables de entorno:
-
REDIRECT_URL
:/foo
-
REQUEST_URI
:/foo
Con mod_rewrite habilitado, también tendrá estas variables:
-
REDIRECT_SCRIPT_URL
:/foo
-
REDIRECT_SCRIPT_URI
:http://example.com/foo
-
SCRIPT_URL
:/foo
-
SCRIPT_URI
:http://example.com/foo
Esta podría ser la razón de parte de la confusión.
Debido a las dificultades para distinguir claramente entre URI y URL, por lo que recuerdo, W3C ya no hace una diferencia entre URI y URL ( http://www.w3.org/Addressing/ ).
Desde RFC 3986 :
Un URI puede clasificarse además como un localizador, un nombre o ambos. El término "Localizador uniforme de recursos" (URL) se refiere al subconjunto de URI que, además de identificar un recurso, proporciona un medio para ubicar el recurso al describir su mecanismo de acceso primario (por ejemplo, su "ubicación" de red). El término "Nombre de recurso uniforme" (URN) se ha usado históricamente para referirse a ambos URI bajo el esquema de "urna" [RFC2141], que debe permanecer globalmente único y persistente incluso cuando el recurso deja de existir o deja de estar disponible, y a cualquier otro URI con las propiedades de un nombre.
Por lo tanto, todas las URL son URI (en realidad no del todo - vea más abajo), y todas las URN son URI, pero las URN y las URL son diferentes, por lo que no puede decir que todas las URI son URL.
EDITAR: anteriormente había pensado que todas las URL son URI válidas, pero según los comentarios:
No "todas las URL son URI". Depende de la interpretación del RFC. Por ejemplo, en Java, el analizador URI no le gusta
[
o]
y eso es porque la especificación dice "no debería" y no "no debería".
Así que eso enturbia las aguas aún más, por desgracia.
Si aún no ha leído la respuesta de Roger Pate , también le aconsejo que lo haga.
Después de leer las publicaciones, encuentro algunos comentarios muy relevantes. En resumen, la confusión entre las definiciones de URL y URI se basa en parte en qué definición depende de cuál y también en el uso informal de la palabra URI en el desarrollo de software.
Por definición, la URL es un subconjunto de URI [RFC2396]. URI contiene URN y URL. Tanto el URI como la URL tienen su propia sintaxis específica que les confiere el estado de ser URI o URL. URN es para identificar de forma única un recurso, mientras que URL es para localizar un recurso. Tenga en cuenta que un recurso puede tener más de una URL pero solo una URN. [RFC2611]
Como desarrolladores y programadores web, casi siempre nos ocuparemos de la URL y, por lo tanto, de la URI. Ahora, una URL se define específicamente para tener todo el esquema de partes: parte-esquema-específico, como por ejemplo https://.com/questions . Esta es una URL y también es una URI. Ahora considere un enlace relativo incrustado en la página como ../index.html. Esto ya no es una URL por definición. Todavía es lo que se conoce como una "referencia URI" [RFC2396].
Creo que cuando se usa la palabra URI para referirse a rutas relativas, en realidad se está pensando en "referencia URI". De manera tan informal, los sistemas de software utilizan URI para referirse a la ruta relativa y la URL para la dirección absoluta. Entonces, en este sentido, una ruta relativa ya no es una URL sino una URI.
En resumen: un URI identifica, una URL identifica y localiza.
Considere una edición específica de la obra de Shakespeare Romeo and Juliet , de la cual tiene una copia digital en su red doméstica.
Puede identificar el texto como urn:isbn:0-486-27557-4
.
Eso sería un URI, pero más específicamente un URN * porque nombra el texto .
También puede identificar el texto como file://hostname/sharename/RomeoAndJuliet.pdf
.
Eso también sería un URI, pero más específicamente una URL porque localiza el texto .
* Nombre del recurso uniforme
(Tenga en cuenta que mi ejemplo está adaptado de URI )
Estas son algunas respuestas muy bien escritas pero de largo aliento. Aquí está la diferencia en lo que respecta a CodeIgniter :
URL - http://example.com/some/page.html
URI - /some/page.html
En pocas palabras, la URL es la forma completa de identificar cualquier recurso en cualquier lugar y puede tener diferentes protocolos como FTP, HTTP, SCP, etc.
URI es un recurso en el dominio actual, por lo que necesita menos información para ser encontrada.
En cada instancia en la que CodeIgniter utiliza la palabra URL o URI, esta es la diferencia de la que están hablando, aunque en el gran esquema de la web, no es 100% correcto.
Este es uno de los temas más confusos y posiblemente irrelevantes que he encontrado como profesional de la web.
Como lo entiendo, un URI es una descripción de algo, siguiendo un formato aceptado, que puede definir ambos o el nombre único (identificación) de algo y su ubicación.
Hay dos subconjuntos básicos: URL, que definen la ubicación (especialmente para un navegador que intenta buscar una página web) y URN, que definen el nombre único de algo.
Tiendo a pensar que las URN son similares a los GUID. Son simplemente una metodología estandarizada para proporcionar nombres únicos para cosas. Al igual que en el espacio de nombres declarativo que usa el nombre de una empresa, no es que haya un recurso en algún servidor que corresponda a esa línea de texto, simplemente identifica algo de forma única.
También tiendo a evitar por completo el término URI y discutir las cosas solo en términos de URL o URN según corresponda, porque causa mucha confusión. La pregunta que realmente deberíamos intentar responder a las personas no es tanto la semántica, sino cómo identificar cuando se encuentran los términos si existe o no una diferencia práctica en ellos que cambiará el enfoque de una situación de programación. Por ejemplo, si alguien me corrige en una conversación y dice: "oh, eso no es una URL, es un URI" Sé que están llenos de eso. Si alguien dice "estamos usando una URN para definir el recurso", es más probable que entienda que solo lo estamos nombrando de forma única, no ubicándolo en un servidor.
Si estoy fuera de la base, por favor hágamelo saber!
Otro ejemplo que me gusta usar cuando pienso en URI es el atributo xmlns de un documento XML:
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
En este caso, com.mycompany.mynode sería un URI que identifica de forma única el espacio de nombres "myPrefix" para todos los elementos que lo utilizan dentro de mi documento XML. Esta NO es una URL porque solo se usa para identificar, no para localizar algo per se.
Según RFC 3986 , los URI se componen de las siguientes piezas:
scheme://authority/path?query
El URI describe el protocolo para acceder a un recurso ( ruta ) o aplicación ( consulta ) en un servidor ( autoridad ).
Todas las URL son URI y todas las URN son URI, pero todas las URI no son URL.
Por favor refiérase para más detalles:
URI => URI
Las URL son un subconjunto de URI (que también contienen URN).
Básicamente, un URI es un identificador general, donde una URL especifica una ubicación y un URN especifica un nombre.
URI es una clase de la súper clase de URL y URN. Wikipedia tiene un URI sobre ellos con enlaces al conjunto correcto de RFC.
Un URI identifica un recurso por ubicación, un nombre o ambos. La mayoría de las veces, la mayoría de nosotros usamos URI que definen una ubicación para un recurso. El hecho de que un URI pueda identificar un recurso por nombre y ubicación ha generado mucha confusión en mi opinión. Un URI tiene dos especializaciones conocidas como URL y URN.
Una URL es una especialización de URI que define la ubicación de red de un recurso específico. A diferencia de una URN, la URL define cómo se puede obtener el recurso. Usamos URL todos los días en forma de http://.com , etc. Pero una URL no tiene que ser una URL HTTP, puede ser ftp://example.com
, etc.
Una pequeña adición a las respuestas ya publicadas, aquí hay un diagrama de Venn para resumir la teoría (de la hermosa explanation de Prateek Joshi):
Y un ejemplo (también del sitio web de Prateek):
Ver este documento Específicamente,
una URL es un tipo de URI que identifica un recurso a través de una representación de su mecanismo de acceso primario (por ejemplo, su "ubicación" de la red), en lugar de por otros atributos que pueda tener.
No es un término extremadamente claro, de verdad.
Wikipedia le dará toda la información que necesita aquí. Citando de http://en.wikipedia.org/wiki/URI :
Una URL es una URI que, además de identificar un recurso, proporciona medios para actuar u obtener una representación del recurso al describir su mecanismo de acceso primario o "ubicación" de la red.
Son lo mismo . Un URI es una generalización de una URL. Originalmente, los URI se planeaban para dividirlos en URL (direcciones) y URN (nombres), pero luego había poca diferencia entre una URL y URI y los URI de http se usaban como espacios de nombres, aunque en realidad no localizaban ningún recurso.
URI, URL, URN
Como la imagen de arriba indica, hay tres componentes distintos en juego aquí. Por lo general, es mejor ir a la fuente cuando se discuten asuntos como estos, así que aquí hay un extracto de Tim Berners-Lee, et. Alabama. en RFC 3986: Identificador uniforme de recursos (URI): Sintaxis genérica:
Un identificador uniforme de recursos (URI) es una secuencia compacta de caracteres que identifica un recurso abstracto o físico.
Un URI puede clasificarse además como un localizador, un nombre o ambos. El término "Localizador uniforme de recursos" (URL) se refiere al subconjunto de URI que, además de identificar un recurso, proporciona un medio para ubicar el recurso al describir su mecanismo de acceso primario (por ejemplo, su "ubicación" de red).
URI s identifican y URL s ubican ; sin embargo, los localizadores también son identificadores , por lo que cada URL también es un URI, pero hay URI que no son URL.
Ejemplos
- Roger Pate
Este es mi nombre, que es un identificador. Es como un URI, pero no puede ser una URL, ya que no dice nada sobre mi ubicación o cómo contactarme. En este caso, también sucede que se identifican al menos a otras 5 personas en los Estados Unidos solo.
- 4914 West Bay Street, Nassau, Bahamas
Este es un localizador, que es un identificador para esa ubicación física. Es como una URL y una URI (ya que todas las URL son URI), y también me identifica indirectly como "residente de ...". En este caso, me identifica de forma única, pero eso cambiaría si obtengo un compañero de cuarto.
Digo "me gusta" porque estos ejemplos no siguen la sintaxis requerida.
Confusión popular
De URL :
En informática, un Localizador uniforme de recursos (URL) es un subconjunto del Identificador uniforme de recursos (URI) que especifica dónde está disponible un recurso identificado y el mecanismo para recuperarlo. En el uso popular y en muchos documentos técnicos y discusiones verbales, a menudo se usa incorrectamente como sinónimo de URI , ... [énfasis mío]
Debido a esta confusión común, muchos productos y documentación utilizan incorrectamente un término en lugar del otro, asignan su propia distinción o los usan como sinónimos.
URNs
Mi nombre, Roger Pate, podría ser como un URN (Nombre de recurso uniforme), excepto que están mucho más regulados y pretenden ser únicos en el espacio y el tiempo.
Debido a que actualmente comparto este nombre con otras personas, no es globalmente único y no sería apropiado como URN. Sin embargo, incluso si ninguna otra familia usara este nombre, me nombran así por mi abuelo paterno, por lo que aún no sería único en el tiempo. E incluso si ese no fuera el caso, la posibilidad de nombrar a mis descendientes después de mí hace que esto sea inadecuado como URN.
Las URN son diferentes de las URL en esta restricción de unicidad rígida, aunque ambas comparten la sintaxis de los URI.
En primer lugar, saca tu mente de la confusión, hazlo simple y entenderás.
URI => Identificador uniforme de recursos Identifica una dirección completa del recurso, es decir, la ubicación, el nombre o ambos.
URL => Localizador uniforme de recursos Identifica la ubicación del recurso.
URN => Nombre de recurso uniforme Identifica el nombre del recurso
Ejemplo
Tenemos la dirección https://www.google.com/folder/page.html donde,
URI (Identificador uniforme de recursos) => https://www.google.com/folder/page.html
URL (Uniform Resource Locator) => https://www.google.com/
URN (nombre de recurso uniforme) => /folder/page.html
URI => (URL + URN) o solo URL o solo URN
Fácil de explicar:
Asumamos lo siguiente
URI es tu nombre
URL es su dirección con su nombre para comunicarse con usted.
mi nombre es loyola
Loyola es URI
Mi dirección es TN, Chennai 600001.
TN, Chennai 600 001, Loyola es URL
Espero que entiendas,
Ahora veamos un ejemplo preciso.
http://www.google.com/fistpage.html
en lo anterior, puede comunicarse con una página llamada firstpage.html ( URI ) utilizando http://www.google.com/fistpage.html ( URL ).
Por lo tanto, URI es un subconjunto de URL pero no viceversa.
URL
Una URL es una especialización de URI que define la ubicación de red de un recurso específico. A diferencia de una URN, la URL define cómo se puede obtener el recurso. Usamos URL todos los días en forma de http://example.com
etc. Pero una URL no tiene que ser una URL HTTP, puede ser ftp://example.com
, etc., también.
URI
Un URI identifica un recurso por ubicación, un nombre o ambos. La mayoría de las veces, la mayoría de nosotros usamos URI que definen una ubicación para un recurso. El hecho de que un URI pueda identificar un recurso por nombre y ubicación ha generado mucha confusión en mi opinión. Un URI tiene dos especializaciones conocidas como URL y URN.
Diferencia entre URL y URI
Un URI es un identificador para algún recurso, pero una URL le brinda información específica para obtener ese recurso. Un URI es una URL y, como señaló un comentarista, ahora se considera incorrecto utilizar la URL al describir las aplicaciones. En general, si la URL describe la ubicación y el nombre de un recurso, el término a utilizar es URI. Dado que este es generalmente el caso que la mayoría de nosotros encontramos todos los días, URI es el término correcto.
Aquí está mi simplificación:
URN: nombre de recurso único, es decir, "qué" (por ejemplo, urn: issn: 1234-5678). Se supone que esto es único ... ya que no hay dos documentos diferentes que puedan tener la misma urna. Un poco como "uuid"
URL: "donde" para encontrarlo (por ejemplo, https://google.com/pub?issnid=1234-5678 .. o ftp://somesite.com/doc8.pdf )
URI: puede ser una URN o una URL. Esta definición borrosa es gracias al RFC 3986 producido por W3C e IETF.
La definición de URI ha cambiado con los años, por lo que tiene sentido que la mayoría de las personas se confunda. Sin embargo, ahora puede sentirse tranquilo por el hecho de que puede referirse a http://somesite.com/something como una URL o URI ... y tendrá razón en cualquier caso (al menos por el momento). .)
Encontré:
Un identificador uniforme de recursos (URI) representa algo así como un panorama general. Puede dividir los URI / URI se pueden clasificar como localizadores (localizadores de recursos uniformes-URL), o como nombres (nombre de recursos uniforme-URN), o ambos. Básicamente, un URN funciona como el nombre de una persona y la URL representa la dirección de esa persona. En pocas palabras, una URN define la identidad de un elemento, mientras que la URL proporciona el método para encontrarlo, finalmente, encapsulando estos dos conceptos es el URI
Un identificador uniforme de recursos (URI) es una cadena de caracteres que identifica un recurso de Internet.
El URI más común es el Localizador uniforme de recursos (URL) que identifica una dirección de dominio de Internet. Otro tipo de URI, no tan común, es el nombre de recurso universal (URN).
Los URI surgieron de la necesidad de identificar los recursos en la Web y otros recursos de Internet , como los buzones electrónicos de manera uniforme y coherente. Por lo tanto, se puede introducir un nuevo tipo de widget: URI para identificar recursos de widgets o usar tel: URI para tener enlaces web que hacen que se realicen llamadas telefónicas cuando se invocan.
Algunos URI proporcionan información para localizar un recurso (como un nombre de host DNS y una ruta en esa máquina), mientras que algunos se usan como nombres de recursos puros. La URL está reservada para identificadores que son localizadores de recursos , incluidas las URL ''http'', como http://.com , que identifica la página web en la ruta dada en el host. Otro ejemplo son las direcciones URL ''mailto'', como mailto: [email protected] , que identifica el buzón en la dirección dada.
Las URN son URI que se utilizan como nombres de recursos puros en lugar de localizadores. Por ejemplo, el URI: mid: [email protected] es un URN que identifica el mensaje de correo electrónico que lo contiene en su campo ''Id de mensaje''. El URI sirve para distinguir ese mensaje de cualquier otro mensaje de correo electrónico. Pero no proporciona la dirección del mensaje en ninguna tienda.
Me preguntaba sobre lo mismo y encontré esto: http://docs.kohanaphp.com/helpers/url .
Puedes ver un claro ejemplo utilizando el url::current()
método. Si tiene esta URL : http://example.com/kohana/index.php/welcome/home.html?query=string
luego usarla url:current()
le da el URI que, según la documentación, es: bienvenido / inicio
No olvides las URNs. Los URI y las URL son ambos URN. Las URL tienen una ubicación:
URI: foo
URL: http://some.domain.com/foo
URL: http://some.domain.com:8080/foo
URL: ftp://some.domain.com/foo
Todos ellos son URNs.
Para responder esto me basaré en una respuesta que modifiqué a otra pregunta . Un buen ejemplo de un URI es cómo identifica un recurso de Amazon S3. Echemos:
s3://www-example-com/index.html
[higo. 1]
que he creado como una copia en caché de
http://www.example.com/index.html
[higo. 2]
en el centro de datos S3-US-West-2 de Amazon .
Incluso si me permitiera enlazar con el esquema del s3://
protocol , no serviría de nada para localizar el recurso. Porque identifica un recurso , la fig. 1 es un URI válido. También es un URN válido, ya que Amazon requiere que el grupo (su término para la authority
porción del URI) sea único entre los centros de datos. Es útil para localizarlo, pero no indica el centro de datos. Por lo tanto, no funciona como una URL.
Entonces, ¿en qué se diferencian URI, URL y URN en este caso?
- higo. 1 es un URI
- higo. 1 es una URN
- higo. 2 es un URI
- higo. 2 es una URL
- La URL para la fig. 1 es http://www-example-com.s3-website-us-west-2.amazonaws.com/
- también http://www-example-com.s3.amazonaws.com/index.html
- pero no http://www-example-com.s3.amazonaws.com/ (sin centro de datos ni nombre de archivo es demasiado genérico para Amazon S3)
NOTA: RFC 3986 define los URI comoscheme://authority/path?query#fragment