Puis-je utiliser un symbole at (@) dans les URL?

90

Est-il sûr d'utiliser un @symbole dans le cadre d'un utilisateur? Par exemple, une URL possible serait http://example.com/@dave.

L'idée est que, de nos jours, les utilisateurs sont communément appelés "@user", alors pourquoi ne pas créer la page utilisateur "@username"?

Geoff
la source
2
"les utilisateurs sont communément appelés @user" - WAT? Mais oui, vous pouvez utiliser @ dans une URL.
Lennart Regebro
1
Je pense qu'il n'y a rien de mal à utiliser @ dans l'url à moins qu'il ne soit correctement encodé.
Praveen
4
@ user1671639: Je pense que vous voulez dire "tant qu'il est correctement encodé en URL".
Lennart Regebro
3
Je viens de remarquer que google maps utilise maintenant @ dans ses URL: google.com/maps/@0,0,2z
Zv_oDD

Réponses:

126

Codé en pourcentage…

Vous pouvez utiliser le @caractère dans les chemins URI HTTP si vous le codez en pourcentage comme %40.

De nombreux navigateurs l'afficheraient toujours sous la forme @, mais par exemple, lorsque vous copiez et collez l'URI dans un document texte, ce sera le cas %40.

… Mais aussi directement

Au lieu de l'encoder en pourcentage, vous pouvez l'utiliser @directement dans le chemin URI HTTP.

Voir la syntaxe pour le chemin d'un URI. Diverses dispositions indépendantes de côté, le chemin d' accès peuvent être constitués de caractères dans le segment, segment-nzou segment-nz-ncensemble. segmentet se segment-nz composent de caractères de l' pcharensemble, qui est défini comme:

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

Comme vous pouvez le voir, le @est répertorié explicitement.

L' segment-nz-ncensemble répertorie également le @caractère explicitement:

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

Donc, un URI HTTP comme celui-ci est totalement valide:

http://example.com/@dave

Exemple

Voici un exemple de page Wikipédia:

  • lien
  • copier et coller: http://en.wikipedia.org/wiki/%22@%22_%28album%29

Comme vous pouvez le voir, les ", (et les )caractères sont codés pour cent, mais le @et _est utilisé directement.

unor
la source
Bonnes nouvelles! Mais alors, pourquoi Twitter ne le fait-il pas?
Augustin Riedinger
1
@AugustinRiedinger: Pourriez-vous fournir un exemple d'URL? Je n'utilise pas Twitter, et d'après ce que je vois, ils ne l'utilisent plus @dans les URL, mais les anciennes URL de profil (?) Fonctionnent toujours: exemple avec encodage en pourcentage @(ne fonctionne pas !) Vs exemple en utilisant @directement ( travail!) .
unor le
Intéressant! En effet, fonctionne avec ou sans @dans le cas de Twitter. Leurs liens internes renvoient l'URL sans @cependant: twitter.com/@stackexchange
Augustin Riedinger
1
@RalphCallaway: AFAIK seuls les caractères non réservés sont équivalents à leur forme codée en pourcentage , mais le @n'est pas sans réserve . Les consommateurs ne doivent donc pas supposer cela %40et @sont équivalents.
unor le
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.Ce n'est pas vrai pour Chrome.
Defozo
42

Pouvez-vous utiliser le @ -symbol dans une URL? - Oui, tu peux!

Notez que @ -character, valeur hexadécimale 40, valeur décimale 64, est un caractère réservé pour les URI. Son utilisation est pour des choses comme les adresses e-mail dans les mailto:URI, par exemple mailto:[email protected]et pour passer des informations de nom d'utilisateur et de mot de passe sur un URI (ce qui est une mauvaise idée, mais possible):http://username:[email protected]

Si vous voulez une URL qui a un @ -symbol dans un chemin, vous devez l'encoder, avec ce qu'on appelle " URL-encoding ". Par exemple comme ceci:http://somewhere.foo/profile/username%40somewhere.foo

Tous les navigateurs modernes afficheront cela comme http://somewhere.foo/profile/[email protected] , et convertiront tout ce qui est saisi dans @ -sign en %40, donc c'est facile à utiliser.

De nombreux frameworks Web vous aideront également soit automatiquement, soit avec des fonctions d'assistance, à convertir vers et à partir d'URL encodées en URL.

Donc, en résumé: oui, vous pouvez utiliser le @ -symbol dans une URL, mais vous devez vous assurer qu'il est encodé, car vous ne pouvez pas utiliser le @ -character .

Lennart Regebro
la source
+1 parfait. Au lieu de s'appuyer sur la théorie, mieux vaut essayer. C'est ce que je voulais dire, merci d'avoir fait cette belle réponse.
Praveen
4
Bien que l'encodage ne soit pas un mauvais conseil, les @caractères n'ont pas "besoin" d'être encodés dans la partie chemin d'une URL ( greenbytes.de/tech/webdav/rfc3986.html#path )
brianreavis
11

Dans la RFC les caractères suivants:

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

sont réservés et:

Le but des caractères réservés est de fournir un ensemble de caractères de délimitation qui se distinguent des autres données dans un URI.

Il n'est donc pas recommandé d'utiliser ces caractères sans encodage.

Salvador Dali
la source
-3

Fondamentalement non.

@ est un caractère réservé et ne doit être utilisé que pour l'usage auquel il est destiné.

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

Il peut être utilisé encodé, mais je ne pense pas que ce soit ce que vous demandiez.

Apparemment, les navigateurs modernes s'en chargeront. Cependant, vous avez demandé si c'était sûr et selon les spécifications de la RFC, vous ne devriez pas l'utiliser (non codé) à moins que ce ne soit pour son usage prévu.

Jon P
la source