Me topé con esto por accidente al escribir mal la URL de una página web en mi navegador web.
¿Por qué las visitas http://example.com/%
provocan un error HTTP 400 Bad Request? ¿El servidor espera algo más después o antes del signo de porcentaje?
Parece suceder para los servidores Apache y Nginx.
(Servidor: cloudflare-nginx) /superuser//%
(Servidor: Apache) http://mozilla.org/%
apache-http-server
webserver
http
nginx
iglvzx
fuente
fuente
Respuestas:
Respuesta corta
Según RFC 3986 , un
%
carácter simple no es una sintaxis de URI válida ; debe ir seguido de dos dígitos hexadecimales significativos .Respuesta larga
El código de estado HTTP que obtuvo pertenece a la
4xx
clase:En particular, el código
400
está definido por el Grupo de trabajo de ingeniería de Internet (IETF) en RFC 2616:Citando Wikipedia (énfasis en negrita mío):
Si desea insertar un literal
%
símbolo, es necesario utilizar la representación codificada por ciento-:%25
.Otras lecturas
fuente
RewriteRule (.*) xyz/$1
(donde xyz es cualquier nombre de carpeta) en .htaccess, debe codificar dos veces% como% 2525.El signo de porcentaje es para insertar un carácter que normalmente no es compatible con la url. Por ejemplo,% 20 es lo mismo que un espacio.
fuente
%25
+
es un método abreviado para codificar un espacio. Si desea un signo más real, use su código hexadecimal,% 2B.