Sería mucho más rápido y fácil preguntar qué caracteres especiales no son seguros para usar en una URL (según la respuesta de Andreas Bonini a continuación).
Mark Hatton
2
Preguntar qué es inseguro es tan difícil de responder: cualquier carácter no ascii debe estar codificado en porcentaje.
neo
2
@neo: no, no lo hace: O
Thomas Bonini
Respuestas:
10
Los caracteres seguros son az, AZ, 0-9 y _ - (subrayado y menos), que además de los caracteres reservados que se utilizan para los parámetros.
Otros personajes darán problemas en algún grado. ejemplo: si un parámetro es una matriz, ?param=array[content]es decir, mostrará una url con los corchetes codificados por la url, que parecen feos e imposibles de dictar.
Pero el problema no es solo que es feo, digamos que tienes un jpg con un personaje al lado de los más seguros, muchas veces el navegador no podrá descargarlo obteniendo un 404. Este es un problema de navegadores más antiguos y algunos navegadores móviles.
¿Cómo probar esto?
Ponga un montón de imágenes / js / css con los caracteres que desea probar en los nombres en una página pública con muchos visitantes
Haga que la página 404 le envíe un correo electrónico cada vez que reciba un golpe
Tengo una bandeja de entrada con 14000 correos electrónicos que prueban mi punto.
bueno, en lugar de "caracteres seguros", diría "caracteres extremadamente seguros": la especificación permite más, pero estoy de acuerdo con usted en que es mejor ser conservador aquí.
Jeff Atwood
2
¿Qué hay de malo con el período?
BlueWhale
11
Los siguientes caracteres tienen un significado especial en el componente de ruta de su URL (el componente de ruta es todo antes del '?'):
";" | "/" | "?"
Además de esos, los siguientes caracteres tienen un significado especial en la parte de consulta de su URL (todo después de '?'). Por lo tanto, si están detrás del '?' necesitas escapar de ellos:
Por supuesto, solo por claridad, esta respuesta es lo opuesto a la pregunta. La pregunta pregunta qué personajes son seguros, no aquellos que no son seguros. Dado que es difícil responder la pregunta original de manera sólida, la pregunta probablemente debería editarse para hacerla al revés y hacer coincidir esta respuesta.
Mark Hatton
3
Las respuestas aquí son buenas, pero hay una excepción más que creo que vale la pena mencionar: los caracteres que no están en inglés. Haciendo referencia a esta pregunta de SF aquí , los caracteres como ñ (como en español) son perfectamente legítimos, SI se han codificado en su DNS correctamente.
Debe usar Punycode dentro de su DNS para que se resuelvan en los navegadores modernos (la entrada para español es xn--espaol-zwa), pero ahora son perfectamente seguros de usar en los nombres de dominio, ya que también son fáciles de escribir para quienes no hablan inglés. .
Respuestas:
Los caracteres seguros son az, AZ, 0-9 y _ - (subrayado y menos), que además de los caracteres reservados que se utilizan para los parámetros.
Otros personajes darán problemas en algún grado. ejemplo: si un parámetro es una matriz,
?param=array[content]
es decir, mostrará una url con los corchetes codificados por la url, que parecen feos e imposibles de dictar.Pero el problema no es solo que es feo, digamos que tienes un jpg con un personaje al lado de los más seguros, muchas veces el navegador no podrá descargarlo obteniendo un 404. Este es un problema de navegadores más antiguos y algunos navegadores móviles.
¿Cómo probar esto?
Tengo una bandeja de entrada con 14000 correos electrónicos que prueban mi punto.
fuente
Los siguientes caracteres tienen un significado especial en el componente de ruta de su URL (el componente de ruta es todo antes del '?'):
Además de esos, los siguientes caracteres tienen un significado especial en la parte de consulta de su URL (todo después de '?'). Por lo tanto, si están detrás del '?' necesitas escapar de ellos:
Para una explicación más detallada, vea el RFC .
fuente
Las respuestas aquí son buenas, pero hay una excepción más que creo que vale la pena mencionar: los caracteres que no están en inglés. Haciendo referencia a esta pregunta de SF aquí , los caracteres como ñ (como en español) son perfectamente legítimos, SI se han codificado en su DNS correctamente.
Debe usar Punycode dentro de su DNS para que se resuelvan en los navegadores modernos (la entrada para español es
xn--espaol-zwa
), pero ahora son perfectamente seguros de usar en los nombres de dominio, ya que también son fáciles de escribir para quienes no hablan inglés. .fuente