Cadena de consulta
La consulta de componentes , a menudo cadena de consulta ( Inglés para la consulta de cadena ) es parte de un Uniform Resource Locator (URL) en la World Wide Web y en el RFC 3986 especifica. El componente de consulta contiene datos, a menudo en forma de parámetros con nombre , que pueden enviarse a un servidor web y ser evaluados por la parte del servidor descendente de una aplicación web .
construcción
Una cadena de consulta comienza con un signo de interrogación ( ?) y termina con un signo de almohadilla ( #) o el final de la URL. A menudo consta de uno o más parámetros, a menudo en forma de pares clave-valor, que a menudo se separan entre sí con un ampersand ( &). El nombre y el valor del parámetro están separados por un carácter reservado , generalmente un signo igual ( =). Los separadores especificados corresponden a los requisitos del World Wide Web Consortium (W3C) para la transmisión de datos de formularios HTML .
La siguiente URL contiene la cadena de consulta stichwort=wiki&ausgabe=liste:
http://www.example.org/suche?stichwort=wiki&ausgabe=liste
En este caso, el parámetro es stichwortel valor wikiy el ausgabevalor del parámetro listeasignado.
ejemplo
Un formulario web se implementa de la siguiente manera:
<form action="suche.php" method="get">
<label for="stichwort">Suche nach</label>
<input type="text" name="stichwort" id="stichwort" />
<input type="hidden" name="suchdatum" value="2019-11-27" />
<input type="submit" value="Suche starten" />
</form>
Tenga en cuenta el type="hidden"campo oculto ( ) suchdatum. No es visible en el navegador, pero se convierte en parte de la cadena de consulta cuando se envía el formulario. El botón enviar, por otro lado, no se incluye en la cadena de consulta porque no se le ha dado un nombre ( name). Si el usuario ingresa la palabra clave "wiki" en el campo de texto y envía el formulario, la siguiente URL, por ejemplo, se stichwort=wiki&suchdatum=2019-11-27genera con la cadena de consulta correspondiente :
http://<server>/suche.php?stichwort=wiki&suchdatum=2019-11-27
Evaluación (en PHP)
La cadena de consulta se puede consultar en PHP . El contenido de la cadena de consulta está disponible como una matriz .
echo $_GET['stichwort'];
genera, por ejemplo, el texto que se ingresó en el campo de búsqueda.
print_r($_GET);
resultados con el ejemplo anterior
Array
(
[stichwort] => wiki
[suchdatum] => 2019-11-27
)
Contras y problemas
Codificación
Algunos caracteres no deben aparecer en una cadena de consulta, ya que de lo contrario podrían interpretarse incorrectamente. Si, por ejemplo, se utiliza el signo igual dentro de un valor, esto se reconoce incorrectamente como un separador clave-valor. Al generar la cadena de consulta, estos caracteres deben codificarse especialmente; por ejemplo, un espacio tendría que +convertirse en un signo más ( ).
Separador de parámetros
El ampersand ( &) como separador de pares clave-valor es problemático en los documentos HTML, ya que este carácter debe codificarse especialmente de acuerdo con el World Wide Web Consortium (W3C). Por lo tanto, el W3C recomienda separar los pares con un punto y coma ( ;).
Riesgos de seguridad
Dado que la cadena de consulta es parte de la URL, todos los usuarios de Internet pueden verla y modificarla en el navegador . En una aplicación web, por lo tanto, solo los parámetros no críticos deben insertarse en la cadena de consulta, como la entrada en un campo de búsqueda.
Restricciones técnicas
Si se debe transferir una mayor cantidad de datos, es recomendable no transferirlos a través de la URL, sino en el cuerpo del mensaje utilizando el método HTTP POST , ya que se aplican algunas restricciones a las URL:
- Por razones de compatibilidad, la especificación HTTP recomienda un tamaño máximo de 255 bytes para URL o URI .
- El Internet Explorer no soporta URLs que constan de más de 2083 caracteres.
- Los servidores web pueden limitar la longitud máxima de una cadena de consulta por sí mismos. Si se excede este límite, el servidor envía el código de estado HTTP 414 al cliente.
- La especificación HTML 3 (mientras tanto obsoleta) prescribe una longitud máxima de destinos de enlace de 1024 caracteres. Esta limitación ya no se aplica a partir de HTML 4.
Ver también
Evidencia individual
- ↑ T. Berners-Lee, R. Fielding, L. Masinter: RFC 3986 - Identificador uniforme de recursos (URI): sintaxis genérica . [Fe de erratas: RFC 3986 ]. Enero de 2005. Sección 3.4: Consulta. Predeterminado: [66]. (Reemplaza RFC 2732 , RFC 2396 , RFC 1808 - Actualizado por RFC 6874 , RFC 7320 - Inglés).
- ↑ 17 Formularios. 17.13.4 Tipos de contenido de formulario. En: Especificación HTML 4.01. Consorcio World Wide Web (W3C), 27 de marzo de 2018, consultado el 27 de noviembre de 2019 .
- ↑ Recomendación de W3C para separar los pares clave-valor
- ↑ Especificación HTTP / 1.1
- ↑ http://support.microsoft.com/kb/208427
- ↑ Especificación HTML 3