Eu me deparei com isso por acidente ao digitar incorretamente o URL de uma página da web no meu navegador.
Por que a visita http://example.com/%
causa um erro HTTP 400 Bad Request a ser lançado? O servidor espera outra coisa antes ou depois do sinal de porcentagem?
Parece acontecer para servidores Apache e Nginx.
(Servidor: cloudflare-nginx) /superuser//%
(Servidor: Apache) http://mozilla.org/%
apache-http-server
webserver
http
nginx
iglvzx
fonte
fonte
Respostas:
Resposta curta
Conforme a RFC 3986 , um
%
caractere simples não é uma sintaxe válida de URI ; deve ser seguido por dois dígitos hexadecimais significativos .Resposta longa
O código de status HTTP que você obteve pertence à
4xx
classe:Em particular, o código
400
é definido pela Internet Engineering Task Force (IETF) na RFC 2616:Citando a Wikipedia (ênfase em negrito):
Se você quiser inserir um literal
%
símbolo, você precisa usar sua representação codificada por cento:%25
.Leitura adicional
fonte
RewriteRule (.*) xyz/$1
(onde xyz é qualquer nome de pasta) em .htaccess, deverá codificar duas vezes% como% 2525.O sinal de porcentagem é para inserir um caractere que normalmente não é suportado no URL. Por exemplo% 20 é igual a um espaço.
fonte
%25
+
é uma maneira de atalho para codificar um espaço. Se você deseja um sinal de mais, use seu código hexadecimal,% 2B.