web-dev-qa-db-fra.com

Pourquoi le signe de pourcentage dans une URL provoque-t-il une erreur HTTP 400 Bad Request?

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.

22
iglvzx

Réponse courte

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.

Longue réponse

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.

Lectures complémentaires

32
and31415

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.

9
LPChip