117 votes

Est-ce que je peux utiliser un symbole arobase (@) à l'intérieur des URL ?

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

L'idée est que, de nos jours, les utilisateurs sont couramment appelés "@utilisateur", alors pourquoi ne pas faire de la page utilisateur "@nomdutilisateur"?

153voto

unor Points 14115

Encodé en pourcentage…

Vous pouvez utiliser le caractère @ dans les chemins d'URI HTTP si vous le encodez en pourcentage en tant que %40.

De nombreux navigateurs l'afficheront toujours comme @, mais par exemple, lorsque vous copiez-collez l'URI dans un document texte, il sera %40.

… mais aussi directement

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

Voir la syntaxe pour le chemin d'une URI. Outre diverses clauses non liées, le chemin peut être composé de caractères de l'ensemble segment, segment-nz, ou segment-nz-nc. segment et segment-nz sont composés de caractères de l'ensemble pchar, qui est défini comme suit:

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

Comme vous pouvez le constater, le caractère @ est explicitement répertorié.

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

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

Ainsi, une URI HTTP comme celle-ci est tout à fait valide:

http://example.com/@dave

Exemple

Voici un exemple de page Wikipedia:

  • lien
  • copiez-collez: http://en.wikipedia.org/wiki/%22@%22_%28album%29

Comme vous pouvez le voir, les caractères ", (, et ) sont encodés en pourcentage, mais le @ et le _ sont utilisés directement.

49voto

Lennart Regebro Points 52510

Pouvez-vous utiliser le symbole @ dans une URL? - Oui, vous pouvez!

Notez que le caractère @, valeur hexadécimale 40, valeur décimale 64, est un caractère réservé pour les URI. Son utilisation est destinée à des choses comme les adresses e-mail dans les URI mailto:, par exemple mailto:username@somewhere.foo et pour transmettre 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:password@somewhere.foo

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

Tous les navigateurs modernes afficheront ceci comme http://somewhere.foo/profile/username@somewhere.foo, et convertiront tout @ saisi en %40, il est donc facile à utiliser.

De nombreux frameworks Web vous aideront également automatiquement, ou avec des fonctions d'aide, à convertir des URL encodées en URL.

En résumé : Oui, vous pouvez utiliser le symbole @ dans une URL, mais vous devez vous assurer qu'il est encodé, car vous ne pouvez pas utiliser le caractère @.

14voto

Salvador Dali Points 11667

Dans le 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 délimitants qui sont distinguables des autres données dans une URI.

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

0voto

Jon P Points 5312

Fondamentalement non.

@ est un caractère réservé et ne doit être utilisé que pour son but prévu.

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 c'est ce que vous demandiez.

Apparemment les navigateurs modernes géreront cela. Cependant, vous avez demandé si c'était sûr et selon la spécification du RFC, vous ne devriez pas l'utiliser (non encodé) à moins que ce ne soit pour son but prévu.

0voto

Ptr2NextPole Points 1

J'ai trouvé cette question lorsque j'ai essayé de rechercher site:typescriptlang.org @ts-ignore dans Chrome, et j'ai ensuite obtenu le résultat de Cette page ne fonctionne pas, ts-ignore est actuellement incapable de traiter cette demande et j'ai vu que l'URL est devenue "http://site:typescriptlang.org%20@ts-ignore/". Je me suis senti tellement refusé, puis j'ai recherché la fonction du symbole @ dans une URL et j'ai trouvé ma réponse sur Wikipedia.

Le format complet de l'URL est scheme://userInfo@host:port/path?query#fragment. Donc lorsque nous recherchons site:typescriptlang.org @ts-ignore, le navigateur pensera que vous voulez visiter "http://site:typescriptlang.org%20@ts-ignore/". Dans cette URL, http est un schéma, site:typescriptlang.org%20 est un userInfo ("%20" est échappé par un caractère d'espace), "ts-ignore/" est un hôte. Bien sûr, nous ne pouvons pas visiter l'hôte nommé "ts-ignore" sans un domaine.

Ainsi, le symbole @ peut être un séparateur entre userInfo et host.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X