¿Se permite que un URI (específicamente una URL HTTP) contenga uno o más caracteres de espacio? Si se debe codificar una URL , ¿es +
solo una convención comúnmente seguida o una alternativa legítima?
En particular, ¿alguien puede apuntar a un RFC que indique que una URL con un espacio debe estar codificada?
Motivación para la pregunta: durante la prueba beta de un sitio web, noté que algunas URL se construyeron con espacios en ellas. ¡Firefox parecía hacer lo correcto, lo que me sorprendió! Pero quería poder señalar a los desarrolladores un RFC para que sintieran la necesidad de corregir esas URL.
Respuestas:
Según RFC 1738 :
fuente
¿Por qué tiene que estar codificado? Una solicitud se ve así:
Hay 3 campos separados por un espacio en blanco. Si pone un espacio en su url:
Usted sabe que tiene 4 campos, el servidor HTTP le dirá que es una solicitud no válida.
3 campos => válido
Nota: en la cadena de consulta (después de?), Un espacio generalmente se codifica como un +
más bien que
fuente
Respuesta más corta: no, debes codificar un espacio; que es correcta para codificar un espacio
+
, pero sólo en la cadena de consulta; en el camino que debes usar%20
.fuente
Las URL se definen en RFC 3986 , aunque otros RFC también son relevantes, pero RFC 1738 es obsoleto.
Es posible que no tengan espacios, junto con muchos otros personajes. Dado que los caracteres prohibidos a menudo deben representarse de alguna manera, existe un esquema para codificarlos en una URL traduciéndolos a su equivalente hexadecimal ASCII con un prefijo "%".
La mayoría de los lenguajes / plataformas de programación proporcionan funciones para codificar y decodificar URL, aunque es posible que no se adhieran correctamente a los estándares RFC. Por ejemplo, sé que PHP no.
fuente
Sí, el espacio generalmente está codificado en "% 20". Cualquier parámetro que pase a una URL debe codificarse, simplemente por razones de seguridad.
fuente
La URL puede tener un carácter de espacio en ellos y se mostrarán como% 20 en la mayoría de los navegadores, pero las reglas de codificación del navegador cambian con bastante frecuencia y no podemos depender de cómo un navegador mostrará la URL.
Por lo tanto, puede reemplazar el carácter de espacio en la URL con cualquier carácter que piense que hará que la URL sea más legible y 'Bonita';) ..... O los caracteres generales que se prefieren son "-", "_", "+" ... pero estas no son las compulsiones, por lo que puedes usar cualquiera de los caracteres que ya no deberían estar en la URL.
Evite el%, &,}, {,], [, /,>, <como reemplazo del carácter de espacio de URL, ya que pueden generar un error en ciertos navegadores y plataformas.
Como puede ver, el desbordamiento de Stak usa el carácter '-' como reemplazo de Espacio (% 20).
Ten un feliz interrogatorio.
fuente
Las URL no deben tener espacios en ellas. Si necesita abordar uno que lo haga, use su valor codificado de
%20
fuente
Los URI y, por lo tanto, los URL, se definen en RFC 3986.
Si observa la gramática definida allí, eventualmente notará que un carácter de espacio nunca puede ser parte de una URL sintácticamente legal, por lo tanto, el término "URL con un espacio" es una contradicción en sí mismo.
fuente
Para responder tu pregunta. Diría que es bastante común que las aplicaciones reemplacen espacios en valores que se usarán en las URL. La razón de esto es usualmente para evitar la codificación de porcentaje (URI) más difícil de leer que ocurre.
Consulte este artículo de Wikipedia sobre la codificación porcentual .
fuente
Firefox 3 mostrará
%20
s en las URL como espacios en la barra de direcciones.fuente
"Is a URL allowed to contain a space?"
. Más bien un comentario.