Version 6.7
GET HTTP HEADER (Kopfteil|FeldArray{; WertArray})
Parameter | Typ | Beschreibung | |
Kopfteil|FeldArray | Text|Text Array | Anfrage HTTP Kopfteil oder Kopfteilfelder | |
WertArray | Text Array | HTTP Kopfteil Feldinhalt |
Beschreibung
Der Befehl GET HTTP HEADER gibt entweder einen String oder zwei Arrays mit dem HTTP Kopfteil für die aktuell ablaufende Anfrage zurück.
Dieser Befehl funktioniert nur im nicht kontextuellen Modus. Er lässt sich von einer beliebigen Methode aus aufrufen (Datenbankmethoden On Web Connection oder On Web Authentication, Methode aufgerufen über '/4DACTION'...), die in einem Web Prozess im nicht kontextuellen Modus ausgeführt wird. Wird GET HTTP HEADER im kontextuellen Modus aufgerufen, gibt er einen leeren String zurück.
Erste Syntax: GET HTTP HEADER (Kopfteil)
Mit dieser Syntax gibt die Variable Kopfteil folgendes Ergebnis zurück:
"GET /page.html HTTP\1.0"+Char(13)+Char(10)+"User-Agent: browser"+
Char(13)+Char(10)+"Cookie: C=HELLO"
Die Felder sind unter Windows und MacOS durch CR+LF (Zeilenschaltung+Zeilenvorschub) voneinander getrennt.
Zweite Syntax: GET HTTP HEADER (FeldArray; WertArray)
Mit dieser Syntax werden in FeldArray und WertArray folgende Ergebnisse zurückgegeben:
FeldArray{1} = "X-METHOD" | WertArray{1} = "GET" * |
FeldArray{2} = "X-URL" | WertArray{2} = "/page.html" * |
FeldArray{3} = "X-VERSION" | WertArray{3} = "HTTP/1.0" * |
FeldArray{4} = "User-Agent" | WertArray{4} = "browser" |
FeldArray{5} = "Cookie" | WertArray{5} = "C=HELLO" |
* Die drei ersten Elemente sind keine HTTP Felder. Sie gehören zur ersten Zeile der Anfrage.
In Anlehnung an den HTTP Standard werden Feldnamen immer in Englisch geschrieben.
Nachfolgend sehen Sie eine Liste mit HTTP Feldern für eine Anfrage:
ACCEPT: Inhalt, den der Browser zulässt.
Accept-Language: Sprache(n), die der Browser verwenden kann (für Information). Damit lässt sich eine Web Site in der im Browser festgelegten Sprache auswählen.
Cookie: Liste mit Cookies
From: E-Mail Adresse des Browser Benutzers.
Host: Server-Name oder -Adresse (verwenden Sie z.B. URL, http://mywebserver
/mypage.html, nimmt Host den Wert «mywebserver» an). Damit können Sie mehrere Namen verwalten, die auf dieselbe IP Adresse zeigen (virtuelles Hosting).
Referer: Ursprung der Anfrage (zum Beispiel http://mywebserver/mypage1.html), z.B. die Seite, welche beim Klicken auf die Schaltfläche Previous angezeigt wird.
User-Agent: Browser oder Proxy-Name und Version.
Die HTTP-Felder wurden vom W3 Konsortium definiert. Die gesamte Liste finden Sie in RFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1), welches Sie derzeit laden können unter www.w3.org.
Beispiel
Mit der folgenden Methode erhalten Sie den Inhalt eines beliebigen Feldes im Kopfteil einer HTTP Anfrage:
` Projektmethode GetHTTPField ` GetHTTPField (Text) -> Text ` GetHTTPField (HTTP header name) -> HTTP header content C_TEXT($0;$1) C_LONGINT($vlItem) ARRAY TEXT($names;0) ARRAY TEXT($values;0) $0:="" GET HTTP HEADER($names;$values) $vlItem:=Find in array($names;$1) If ($vlItem>0) $0:=$values{$vlItem} End if
Diese Projektmethode können Sie folgendermassen aufrufen:
` Cookie header content $cookie:=GetHTTPField("Cookie")
Je nach der im Browser definierten Sprache können Sie verschiedene Seiten senden (zum Beispiel in der Datenbankmethode On Web Connection):
$language:=GetHTTPField("Accept-Language") Case of :($language="@fr@") `Französisch (siehe Liste ISO 639) SEND HTML FILE("index_fr.html") :($language="@sp@") `Spanisch (siehe Liste ISO 639) SEND HTML FILE("index_es.html") Else SEND HTML FILE("index.html") End case
Hier ist ein Beispiel für virtuelle Hosts (zum Beispiel in der Datenbankmethode On Web Connection). Die Namen "home_site.com", "home_site1.com" und "home_site2.com" richten sich an dieselbe IP Adresse, zum Beispiel 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
Referenz
GET HTTP BODY, SET HTTP HEADER.