Hoy encontré la siguiente URL:
http://www.sfgate.com/cgi-bin/blogs/inmarin/detail??blogid=122&entry_id=64497
Observe el signo de interrogación duplicado al principio de la cadena de consulta:
??blogid=122&entry_id=64497
Mi navegador no parecía tener ningún problema con él y ejecutaba un marcador rápido:
javascript:alert(document.location.search);
me acaba de dar la cadena de consulta que se muestra arriba.
¿Es esta una URL válida? La razón por la que soy tan pedante (suponiendo que lo sea) es porque necesito analizar URL como esta para los parámetros de consulta, y admitir signos de interrogación duplicados requeriría algunos cambios en mi código. Obviamente, si están en la naturaleza, tendré que apoyarlos; Principalmente tengo curiosidad por saber si es culpa mía por no cumplir exactamente con los estándares de URL, o si de hecho es una URL no estándar.
url
parsing
query-parameters
Estropear
fuente
fuente
indexOf()
para localizar el signo de interrogación, por lo que tomó la posición de la primera aparición. Luego estoy dividiendo los query_parameters en cada uno&
y luego sus pares de nombre / valor en cada uno=
.Respuestas:
Si, es valido. Solo el primero
?
en una URL tiene importancia, cualquiera que se trate después de que se trate como signos de interrogación literal:...
http://tools.ietf.org/html/rfc3986#section-3.4
fuente
?blogid
. En realidad, parece ser un parámetro no esencial, es decir, la página se muestra igual con cualquier número de signos de interrogación u omitiendo el parámetro por completo.Como respuesta relacionada tangencialmente,
foo?spam=1?&eggs=3
le da al parámetrospam
el valor1?
fuente
.htaccess
trucos o similares. si cambiamosfoo
ascript.php
y hacer esta solicitudscript.php?spam=1?&eggs=3
a continuaciónvar_dump($_GET)
espectáculosarray(2) { ["spam"]=> string(2) "1?" ["eggs"]=> string(1) "3" }