¿Es http://example.com/foo?bar
válida una url ?
Estoy buscando un enlace a algo oficial que dice de una manera u otra. Una respuesta simple de sí / no o evidencia anecdótica no será suficiente.
url
query-parameters
Conley Owens
fuente
fuente
Respuestas:
El URI RFC no exige un formato para la cadena de consulta. Aunque se reconoce que la cadena de consulta a menudo llevará pares de nombre-valor, no es necesario (por ejemplo, a menudo contendrá otro URI).
HTML establece que un formulario enviado a través de HTTP GET debe codificar los valores del formulario como pares de nombre-valor en el formulario "? Key1 = value1 & key2 = value2 ..." (codificado correctamente). El análisis de la cadena de consulta depende del código del lado del servidor (por ejemplo, el motor de servlet de Java).
No identifica qué marco del lado del servidor usa, si lo hay, pero es posible que su marco del lado del servidor pueda asumir que la cadena de consulta siempre estará en pares de nombre-valor y puede ahogarse en una cadena de consulta que no sea en ese formato (por ejemplo
?bar
). Si es su propio código personalizado que analiza la cadena de consulta, simplemente debe asegurarse de manejar ese formato de cadena de consulta. Si es un marco, deberá consultar su documentación o simplemente probarla para ver cómo se maneja.fuente
isindex
magianame
de HTML5 permite enviar una cadena de consulta sin formato de clave-valor stackoverflow.com/a/37579004/895245Son perfectamente válidos. Podrías considerarlos como el equivalente del gran hombre musculoso parado en silencio detrás del mensajero de la mafia. El tipo no tiene nombre y no habla, pero su mera presencia transmite información.
fuente
"El esquema" http "se utiliza para localizar recursos de red a través del protocolo HTTP. Esta sección define la sintaxis y la semántica específicas del esquema para las URL http". http://www.w3.org/Protocols/rfc2616/rfc2616.html
Entonces sí, cualquier cosa es válida después de un signo de interrogación. Su servidor puede interpretar de manera diferente, pero de manera anecdótica , puede ver que algunos idiomas lo tratan como un valor booleano que es verdadero si se enumera.
fuente
Si, es valido.
Si uno simplemente quiere verificar si el parámetro existe o no, esta es una forma de hacerlo.
fuente
Especificaciones de URI
La única parte relevante de la especificación de URI es saber todo entre el primero
?
y el primero se#
ajusta a la definición de especificación de una consulta. Puede incluir cualquier personaje como[:/.?]
. Esto significa que una cadena de consulta como?bar
, o?ten+green+apples
es válida.Encuentra el RFC 3986 aquí
Especificación HTML
isindex
no es significativamente HTML5.Se proporciona en desuso para su uso como primer elemento solo en un formulario y se envía sin nombre.
La última vez que se admitió isindex fue HTML3 . Su uso en HTML5 es para proporcionar una compatibilidad con versiones anteriores más fácil.
Apoyo en bibliotecas
El soporte en las bibliotecas para este formato de URI varía, sin embargo, algunas bibliotecas proporcionan soporte heredado para facilitar su uso
isindex
.Perl URI.pm (soporte especial)
Algunas bibliotecas como el URI de Perl proporcionan métodos para analizar este tipo de estructuras.
Node.js
url
(sin soporte especial)Como otro ejemplo mucho más frecuente,
node.js
toma la ruta normal y facilita el análisis comoparseQueryString
)La mayoría de las otras API de análisis de URI siguen algo similar a esto.
parse_url
, sigue una implementación similar pero solo devuelve la cadena para la consulta. Analizar en un objeto dek=>v
requiereparse_string()
fuente
Es válido: ver Wikipedia , RFC 1738 (3.3. HTTP) , RFC 3986 (3. Componentes de sintaxis) .
fuente
isindex
magia obsoletaname
de HTML5Esta característica en desuso permite que el envío de un formulario genere dicha URL, lo que proporciona más evidencia de que es válido para HTML. P.ej:
genera una URL de tipo:
Estándar: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
isindex
Sin embargo, está en desuso como se menciona en: https://stackoverflow.com/a/41689431/895245fuente
Como se describe en todas las demás respuestas, es perfectamente válido para verificar, especialmente para cosas de tipo booleano
Aquí hay una función simple para obtener la cadena de consulta por nombre:
y ahora desea verificar si la cadena de consulta que está buscando existe o no, puede hacer algo simple como:
la
exampleQueryString
habráfalse
si la función no puede encontrar la cadena de consulta, de lo contrario serátrue
.fuente