¿Puedo usar un símbolo arroba (@) dentro de las URL?

90

¿Es seguro utilizar un @símbolo como parte de un usuario? Por ejemplo, una posible URL sería http://example.com/@dave.

La idea es que, hoy en día, los usuarios se denominan comúnmente "@user", así que ¿por qué no hacer que la página de usuario sea "@username"?

Geoff
fuente
2
"los usuarios se denominan comúnmente @usuario" - ¿WAT? Pero sí, puedes usar @ en una URL.
Lennart Regebro
1
Creo que no hay nada de malo en usar @ en url a menos que esté codificado correctamente.
Praveen
4
@ user1671639: Creo que te refieres a "siempre que esté codificado correctamente en la URL".
Lennart Regebro
3
Acabo de notar que Google Maps ahora usa @ en sus URL: google.com/maps/@0,0,2z
Zv_oDD

Respuestas:

126

Codificado por porcentaje ...

Puede utilizar el @carácter en las rutas HTTP URI si lo codifica porcentualmente como %40.

Muchos navegadores lo mostrarían todavía como @, pero por ejemplo, cuando copie y pegue el URI en un documento de texto, lo será %40.

... pero también directamente

En lugar de codificarlo en porcentaje, puede usarlo @directamente en la ruta HTTP URI.

Consulte la sintaxis de la ruta de un URI. Varios cláusulas no relacionadas a un lado, el camino pueden consistir de caracteres en el segment, segment-nzo segment-nz-ncconjunto. segmenty segment-nz constan de personajes del pcharconjunto, que se define como:

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

Como puede ver, @se enumera explícitamente.

El segment-nz-ncconjunto también enumera el @personaje explícitamente:

segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )

Entonces, un URI HTTP como este es totalmente válido:

http://example.com/@dave

Ejemplo

Aquí hay un ejemplo de página de Wikipedia:

  • enlace
  • copiar y pegar: http://en.wikipedia.org/wiki/%22@%22_%28album%29

Como se puede ver, las ", (y )los caracteres son codificados por ciento, pero el @y el _se utiliza directamente.

unor
fuente
¡Buenas noticias! Pero entonces, ¿por qué Twitter no hace esto?
Augustin Riedinger
1
@AugustinRiedinger: ¿Podría proporcionar una URL de ejemplo? No uso Twitter y, por lo que veo, ya no se usan @en las URL, pero las URL de perfil antiguas (?) Aún funcionan: ejemplo con porcentaje codificado @no funciona!) Vs. ejemplo usando @directamente (¿ trabajo!) .
unor
¡Interesante! De hecho, funciona con o sin @en el caso de Twitter. Sus enlaces internos hacen referencia a la URL sin @embargo: twitter.com/@stackexchange
Augustin Riedinger
1
@RalphCallaway: AFAIK sólo no reservados caracteres son equivalentes a su forma por ciento codificados , pero el @no es sin reservas . Por tanto, los consumidores no deben asumir eso %40y @son equivalentes.
unor
1
Many browsers would display it still as @, but e.g. when you copy-and-paste the URI into a text document, it will be %40.Eso no es cierto para Chrome.
Defozo
42

¿Puedes usar el símbolo @ en una URL? - ¡ Sí, puedes!

Tenga en cuenta que el carácter @, valor hexadecimal 40, valor decimal 64, es un carácter reservado para URI. Su uso es para cosas como direcciones de correo electrónico en mailto:URI, por ejemplo, mailto:[email protected]y para pasar información de nombre de usuario y contraseña en un URI (lo cual es una mala idea, pero posible):http://username:[email protected]

Si desea una URL que tenga un símbolo @ en una ruta, debe codificarla, con la denominada " codificación de URL ". Por ejemplo así:http://somewhere.foo/profile/username%40somewhere.foo

Todos los navegadores modernos mostrarán esto como http://somewhere.foo/profile/[email protected] , y convertirán cualquier escrito en @ -sign a %40, por lo que es fácil de usar.

Muchos marcos web también lo ayudarán, ya sea automáticamente, o con funciones auxiliares, a convertir hacia y desde URL codificadas en URL.

Entonces, en resumen: Sí, puede usar el símbolo @ en una URL, pero debe asegurarse de que esté codificado, ya que no puede usar el carácter @ .

Lennart Regebro
fuente
+1 perfecto. En lugar de confiar en la teoría, es mejor intentarlo. Esto es lo que quise decir, gracias por hacer que esta sea una buena respuesta.
Praveen
4
Aunque la codificación no es un mal consejo, los @caracteres no "necesitan" codificarse en la parte de la ruta de una URL ( greenbytes.de/tech/webdav/rfc3986.html#path )
brianreavis
11

En el RFC los siguientes caracteres:

! * '(); : @ & = + $, /? % # []

están reservados y:

El propósito de los caracteres reservados es proporcionar un conjunto de caracteres delimitadores que se distingan de otros datos dentro de un URI.

Por lo que no se recomienda utilizar estos caracteres sin codificar.

Salvador Dalí
fuente
-3

Básicamente no.

@ es un carácter reservado y solo debe usarse para el propósito previsto.

Ver: http://perishablepress.com/stop-using-unsafe-characters-in-urls/ y http://www.ietf.org/rfc/rfc3986.txt

Se puede usar codificado, pero no creo que sea eso lo que estabas preguntando.

Aparentemente, los navegadores modernos se encargarán de esto. Sin embargo, preguntó si esto era seguro y de acuerdo con las especificaciones del RFC , no debería usarlo (sin codificar) a menos que sea para el propósito previsto.

Jon P
fuente