Je suis tombé par hasard là-dessus par hasard lorsque j'ai mal entré l'URL d'une page Web dans mon navigateur Web.
Pourquoi la visite de http://example.com/%
provoque-t-elle une erreur HTTP 400 Bad Request? Le serveur attend-il autre chose avant ou avant le signe de pourcentage?
Cela semble se produire pour les serveurs Apache et Nginx.
(Serveur: cloudflare-nginx) https://superuser.com/%
(Serveur: Apache) http://mozilla.org/%
Conformément à RFC 3986 , un caractère nud %
n'est pas une syntaxe valide URI ; il devrait être suivi de deux chiffres hexadécimaux significatifs.
Le code de statut HTTP que vous avez obtenu appartient à la classe 4xx
:
4xx: Client Error - The request contains bad syntax or cannot be fulfilled
Source: registre de codes d'état du protocole de transfert hypertexte (HTTP)
En particulier, le code 400
est défini par le Internet Engineering Task Force (IETF) dans RFC 2616:
10.4.1 400 mauvaise requête
La requête n'a pas pu être comprise par le serveur en raison d'une syntaxe mal formée. Le client NE DEVRAIT PAS répéter la demande sans modifications.
Source: RFC 2616 - Protocole de transfert d'hypertexte - HTTP/1.1
Citant Wikipedia (le gras que je souligne):
Les caractères autorisés dans un URI sont soit reserved ou sans réserve (), soit un caractère de pourcentage faisant partie d'un codage à pourcentage ).
Source: Pourcentage de codage - Pourcentage de codage dans un URI
Si vous souhaitez insérer un symbole littéral %
, vous devez utiliser sa représentation codée en pourcentage: %25
.
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.