Je suis tombé dessus par accident en tapant mal l'URL d'une page Web dans mon navigateur Web.
Pourquoi la visite http://example.com/%
provoque-t-elle une erreur HTTP 400 Bad Request? Le serveur attend-il autre chose après ou avant le signe de pourcentage?
Cela semble se produire pour les serveurs Apache et Nginx.
(Serveur: cloudflare-nginx) /superuser//%
(Serveur: Apache) http://mozilla.org/%
Réponses:
Réponse courte
Selon RFC 3986 , un
%
caractère nu n'est pas une syntaxe URI valide ; il doit être suivi de deux chiffres hexadécimaux significatifs .Longue réponse
Le code d'état HTTP que vous avez obtenu appartient à la
4xx
classe:En particulier, le code
400
est défini par l' Internet Engineering Task Force (IETF) dans la RFC 2616:Citant Wikipédia (gras en gras):
Si vous souhaitez insérer un littéral
%
symbole, vous devez utiliser la représentation codée pour cent-:%25
.Lectures complémentaires
la source
RewriteRule (.*) xyz/$1
(où xyz est n'importe quel nom de dossier) dans .htaccess, vous devez double- coder% en% 2525.Le signe de pourcentage sert à insérer un caractère qui n'est normalement pas pris en charge dans l'url. Par exemple,% 20 est identique à un espace.
la source
%25
+
est un moyen de raccourci pour encoder un espace. Si vous voulez un vrai signe plus, utilisez son code hexadécimal,% 2B.