url - query - signo de interrogacion vector
¿Es válido tener más de un signo de interrogación en una URL? (2)
Como una respuesta relacionada tangencialmente, foo?spam=1?&eggs=3
da al parámetro spam
el valor 1?
Me encontré con la siguiente URL hoy:
http://www.sfgate.com/cgi-bin/blogs/inmarin/detail??blogid=122&entry_id=64497
Observe el doble signo de interrogación al comienzo de la cadena de consulta:
??blogid=122&entry_id=64497
Mi navegador no parece tener ningún problema con él, y ejecuta un bookmarklet rápido:
javascript:alert(document.location.search);
simplemente me dio la cadena de consulta que se muestra arriba.
¿Es esta una URL válida? La razón por la que estoy siendo tan pedante (suponiendo que lo sea) es porque necesito analizar URL como esta para los parámetros de consulta, y el apoyo a los signos de interrogación duplicados requeriría algunos cambios en mi código. Obviamente, si están en la naturaleza, tendré que apoyarlos; Tengo curiosidad sobre todo si es mi culpa por no cumplir con los estándares de URL exactamente, o si de hecho es una URL no estándar.
Si, es valido ¿Solo el primero ?
en una URL tiene importancia, cualquiera después de que se tratan como signos de interrogación literales:
El primer carácter de interrogación ("?") Indica el componente de consulta y termina con un carácter de signo de número ("#") o al final del URI.
...
Los caracteres barra ("/") y signo de interrogación ("?") Pueden representar datos dentro del componente de consulta. Tenga en cuenta que algunas implementaciones más antiguas y erróneas pueden no manejar dichos datos correctamente cuando se utiliza como el URI base para referencias relativas (Sección 5.1), aparentemente porque no pueden distinguir los datos de consulta de los datos de ruta al buscar separadores jerárquicos. Sin embargo, como los componentes de consulta se utilizan a menudo para transportar información de identificación en forma de pares "clave = valor" y un valor utilizado frecuentemente es una referencia a otro URI, a veces es mejor para la usabilidad evitar la codificación porcentual de esos caracteres.