Por que o percentual de login em uma URL causa um erro HTTP 400 Bad Request?

22

Eu tropecei nisso acidentalmente ao digitar incorretamente a URL de uma página da Web no meu navegador da Web.

Por que visitar http://example.com/% causa um erro de HTTP 400 Bad Request? O servidor está esperando algo mais depois ou antes do sinal de porcentagem?

Parece acontecer para os servidores Apache e Nginx.

  • (Servidor: cloudflare-nginx) link

  • (Servidor:Apache) link

por iglvzx 29.05.2014 / 01:01

2 respostas

31

Resposta curta

De acordo com a RFC 3986 , um caractere % vazio não é válido URI sintaxe; Ele deve ser seguido por dois dígitos hexadecimais significativos.

Resposta longa

O código de status HTTP que você obteve pertence à classe 4xx :

4xx: Client Error - The request contains bad syntax or cannot be fulfilled

Source: Hypertext Transfer Protocol (HTTP) Status Code Registry

Em particular, o código 400 é definido pelo IETF (Internet Engineering Task Force) em RFC 2616:

10.4.1 400 Bad Request

The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.

Source: RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1

Citando a Wikipédia (ênfase em negrito minha):

The characters allowed in a URI are either reserved or unreserved (or a percent character as part of a percent-encoding).

Source: Percent-encoding - Percent-encoding in a URI

Se você quiser inserir um símbolo literal % , precisará usar sua representação codificada por percentual: %25 .

Leitura adicional

por 29.05.2014 / 01:46
9

O sinal de porcentagem é para inserir um caracter que normalmente não é suportado no URL. Por exemplo% 20 é o mesmo que um espaço.

    
por 29.05.2014 / 01:03