Quels caractères spéciaux peuvent être utilisés en toute sécurité dans l'URL?


13

Quels caractères spéciaux peuvent être utilisés en toute sécurité dans l'URL?


2
Il serait beaucoup plus rapide et plus facile de demander quels caractères spéciaux ne sont pas sûrs à utiliser dans une URL (selon la réponse d'Andreas Bonini ci-dessous).
Mark Hatton

2
Il est aussi difficile de répondre à ce qui est dangereux: tout caractère non ascii doit être codé en pourcentage.
néo

2
@neo: non ça ne marche pas: O
Thomas Bonini

Réponses:


10

Les caractères sûrs sont az, AZ, 0-9 et _ - (soulignement et moins), qui en plus des caractères réservés qui sont utilisés pour les paramètres.

D'autres personnages poseront des problèmes dans une certaine mesure. exemple: si un paramètre est un tableau, ?param=array[content]c'est-à-dire qu'il affichera une URL avec les crochets encodés, qui ont l'air moche et impossible à dicter.

Mais le problème n'est pas seulement laid, disons que vous avez un jpg avec un caractère à côté des plus sûrs, plusieurs fois le navigateur ne pourra pas le télécharger en obtenant un 404. C'est un problème des navigateurs plus anciens et de certains navigateurs mobiles.

Comment tester cela?

  • mettre un tas d'images / js / css avec les caractères que vous souhaitez tester dans les noms dans une page publique avec de nombreux visiteurs
  • Faire en sorte que la page 404 vous envoie un e-mail chaque fois qu'elle reçoit un hit

J'ai une boîte de réception avec 14 000 e-mails prouvant mon point.


5
eh bien, au lieu de "caractères sûrs", je dirais "caractères extrêmement sûrs" - la spécification permet plus, mais je suis d'accord avec vous qu'il vaut mieux être conservateur ici.
Jeff Atwood

2
Quel est le problème avec la période?
BlueWhale

11

Les caractères suivants ont une signification particulière dans le composant chemin de votre URL (le composant chemin est tout avant le «?»):

  ";" | "/" | "?"

En plus de ceux-ci, les caractères suivants ont une signification particulière dans la partie requête de votre URL (tout après «?»). Par conséquent, s'ils sont après le "?" vous devez leur échapper:

  ":" | "@" | "&" | "=" | "+" | "$" | ","

Pour une explication plus approfondie, voir le RFC .


3
Bien sûr, pour plus de clarté, cette réponse est à l'opposé de la question. La question demande quels caractères sont sûrs, pas ceux qui ne le sont pas. Comme il est difficile de répondre de manière robuste à la question d'origine, la question devrait probablement être modifiée pour la poser dans l'autre sens et correspondre à cette réponse.
Mark Hatton

3

Les réponses ici sont bonnes, mais il y a une autre exception, je pense, qui mérite d'être mentionnée - les caractères non anglais. En faisant référence à cette question SF ici , les caractères comme ñ (comme en Español) sont parfaitement légitimes, S'ils ont été correctement encodés dans votre DNS.

Vous devez utiliser Punycode dans votre DNS pour les résoudre dans les navigateurs modernes (l'entrée pour español est xn--espaol-zwa), mais ceux-ci sont désormais parfaitement sûrs à utiliser dans les noms de domaine, car ils sont également faciles à taper pour les non-anglophones. .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.