versión 6.7
GET HTTP HEADER (encab|arrayCamp{; arrayValores})
Parámetro | Tipo | Descripción | |
encab|arrayCamp | Texto|Array Text | Encabezado HTTP de la petición o | |
Campos del encabezado HTTP | |||
arrayValores | Array Texto | Contenido de los campos del encabezado HTTP |
Descripción
El comando GET HTTP HEADER devuelve, o una cadena o dos arrays, que contienen el encabezado HTTP utilizado en la petición en proceso.
Este comando funciona únicamente en modo no contextual. Puede llamarse desde cualquier método (Método de base On Web Connection o Método de base On Web Authentication, método llamado por '/4DACTION'...) ejecutado en un proceso Web en un modo no contextual. Si GET HTTP HEADER se llama en modo contextual, devuelve cadenas vacías.
Primera sintaxis: GET HTTP HEADER (encabezado)
Cuando se utiliza esta sintaxis, el resultado devuelto en la variable encabezado es el siguiente:
"GET /page.html HTTP\1.0"+Char(13)+Char(10)+"User-Agent: browser"+
Char(13)+Char(10)+"Cookie: C=HELLO"
Cada campo de encabezado está separado por una secuencia CR+LF (Retorno de carro+Retorno de línea) bajo Windows y Mac OS.
Segunda sintaxis: GET HTTP HEADER (arrayCamp; arrayValores)
Cuando utiliza esta sintaxis, los resultados devueltos en los arrays fieldArray y valueArray son del tipo siguiente:
arrayCamp{1} = "X-METHOD" | arrayValores{1} = "GET" * |
arrayCamp{2} = "X-URL" | arrayValores{2} = "/page.html" * |
arrayCamp{3} = "X-VERSION" | arrayValores{3} = "HTTP/1.0" * |
arrayCamp{4} = "User-Agent" | arrayValores{4} = "browser" |
arrayCamp{5} = "Cookie" | arrayValores{5} = "C=HELLO" |
* Estos tres primeros elementos no corresponden a los campos HTTP. Forman parte de la primera línea de la petición.
Conforme al estándar HTTP, los nombres de los campos siempre se escriben en inglés.
Esta es una lista de algunos campos HTTP que pueden utilizarse en una petición:
Accept: contenido permitido por el navegador.
Accept-Language: idioma(s) aceptado(s) por el navegador (para información). Permite seleccionar una página Web utilizando el idioma definido en el navegador.
Cookie: lista de cookies
From: dirección de correo electrónico del usuario del navegador.
Host: nombre o dirección del servidor (por ejemplo utilizando un URL, http://miservidorweb/mipagina.html, Host toma el valor «miservidorweb»). Permites administrar varios nombres que apuntan a la misma dirección IP (virtual hosting).
Referer: origen de la petición (por ejemplo http://miservidorweb/mipagina1.html), es decir la página que el usuario muestra cuando se hace clic en el botón Anterior.
User-Agent: nombre y versión del navegador o del proxy.
Ejemplo
El siguiente método permite recuperar el contenido de todo campo de encabezado de petición HTTP:
` Método de proyecto GetHTTPField ` GetHTTPField (Text) -> Text ` GetHTTPField (Nombre encabezado HTTP) -> Contenido encabezado HTTP C_TEXT($0;$1) C_LONGINT($vlElem) ARRAY TEXT($nombres;0) ARRAY TEXT($valores;0) $0:="" GET HTTP HEADER($nombres;$valores) $vlElem:=Find in array($nombres;$1) If ($vlElem>0) $0:=$valores{$vlElem} End if
Una vez escrito este método de proyecto, puede llamarse de esta forma:
` Contenido del encabezado Cookie $cookie:=GetHTTPField("Cookie")
Puede enviar diferentes páginas en función del idioma del navegador (por ejemplo en el Método
On Web Connection):
$idioma:=GetHTTPField("Accept-Language") Case of : ($idioma="@fr@") `Francés (ver lista ISO 639) SEND HTML FILE("index_fr.html") : ($idioma="@sp@") `Español (ver lista ISO 639) SEND HTML FILE("index_es.html") Else SEND HTML FILE("index.html") End case
Nota: Los navegadores Web permiten definir varios idiomas por defecto. Están listados en el campo "Accept-Language", separados por un ";". Su propiedad está definida de acuerdo a su posición dentro de la cadena; por lo tanto es una buena idea probar la posición de los idiomas en la cadena.
Este es un ejemplo de hosts virtuales (por ejemplo en el Método de base On Web Connection). Los siguiente nombres "home_site.com", "home_site1.com" y "home_site2.com" apuntan a la misma dirección IP, por ejemplo 192.1.2.3.
$host:=GetHTTPField("Host") Case of : ($host="www.site1.com") SEND HTML FILE("home_site1.com") : ($host="www.site2.com") SEND HTML FILE("home_site2.com") Else SEND HTML FILE("home_site.com") End case
Ver también
GET HTTP BODY, SET HTTP HEADER.