Die Klasse Response (gb.web) können Sie zum Erzeugen einer HTTP-Antwort (HTTP-Response) einsetzen. Diese Klasse erzeugt vor allem die Antwort-Kopfzeilen. Die Antwort-Inhalte müssen mit einem PRINT-Befehl auf die Standard-Ausgabe des CGI-Skripts gesendet werden. Beispiele für die praktische Realisierung finden Sie im Kapitel 24.6.8 Projekte.
Die Klasse Response verfügt über diese Eigenschaften:
Eigenschaft | Datentyp | Beschreibung |
---|---|---|
Buffered | Boolean | Gibt True zurück, wenn die Eigenschaft gesetzt ist oder setzt die Eigenschaft. Der Standard ist die nicht-gepufferte Antwort. Wenn die HTTP-Antwort gepuffert wird, dann werden die Header und die Daten beim Aufruf der Methode Response.End gesendet. Sie müssen diese Eigenschaft setzen, bevor Sie eine HTTP-Response generieren, wenn vom Standard abgewichen wird. |
ContentType | String | Gibt den MIME-Typ der Antwort zurück oder setzt den MIME-Typ. |
Status | String | Gibt den Status-Header einer HTTP-Response zurück oder setzt den Status-Header. |
Tabelle 24.6.5.1.1 : Wesentliche Eigenschaften der Klasse Response
In der folgenden Prozedur finden Sie eine Übersicht einsetzbarer MIME-Typen:
Private Sub GetContentTypeFrom(sPath As String) As String Select Case Lower(File.Ext(sPath)) Case "css" Return "text/css" Case "jpg", "jpeg", "jpe", "thumb" Return "image/jpeg" Case "png" Return "image/png" Case "gif" Return "image/gif" Case "tiff", "tif" Return "image/tiff" Case "odt" Return "application/vnd.oasis.opendocument.text" Case "doc" Return "application/msword" Case "ods" Return "application/vnd.oasis.opendocument.spreadsheet" Case "xls" Return "application/msexcel" Case "pdf" Return "application/pdf" Case "zip" Return "application/zip" Case "html", "htm" Return "text/html" Case "txt" Return "text/plain" Case "avi" Return "video/x-msvideo" Case "mpg", "mpeg" Return "video/mpeg" Case "ps" Return "application/postscript" Case "dwg" Return "application/acad" Case "wav" Return "audio/x-wav" Case "ogg" Return "application/ogg" Case "jar" Return "application/x-jar" Case "xml", "kml" Return "text/plain" Case Else Return "application/octet-stream" End Select End
Die Klasse Response verfügt über die folgenden Methoden:
Methode | Rückgabetyp | Beschreibung |
---|---|---|
AddHeader ( Name As String, Value As String ) | String | Fügt HTTP-Header in die Antwort ein. |
Begin() | - | Sendet den Antwort-Header und erlaubt Ihnen den Antwort-Inhalt auszugeben. |
End() | - | Beendet die Antwort. Sie müssen diese Methode aufrufen, wenn die Antwort gepuffert wird, so dass der Puffer geleert und an den Client gesendet wird. |
Redirect ( URL As String ) | - | Leitet den HTTP-Client auf einen anderen URL um. Wenn der angegebene URL kein Host ist, dann wird der Host der Anfrage verwendet. Sie sollten das CGI-Skript sofort nach der Verwendung dieser Methode (mit Return) beenden! |
SetCookie ( Cookie As String, Value As String [ , Domain As String, Path As String, Expires As Date, HttpOnly As Boolean ] ) | - | Generiert einen neuen Cookie mit den zwei obligatorischen und den weiteren, optionalen Parametern. |
RemoveCookie ( Cookie As String, Value As String [ , Domain As String, Path As String ] ) | - | Entfernt ein Cookie. Tatsächlich wird ein Cookie mit einem in der Vergangenheit liegenden Ablaufdatum gesendet, so dass der Cookie damit zerstört wird. |
SendFile ( Path As String [ , ContentType As String ] ) | - | Sendet eine Datei an den Client. Optional können Sie den Type des Datei-Inhalts angeben. Wenn Sie diese Methode verwenden, sollten Sie das Skript sofort zu beenden. Verwenden Sie keine andere Methode! Beachten Sie, dass alle mit der Methode 'AddHeader(..)' definierten Header ebenfalls gesendet werden. |
Tabelle 24.6.5.2.1 : Methoden der Klasse Response
(1) Fehlermeldung im Zusammenspiel mit der CATCH-Instruktion:
Dim sMessage As String ... CATCH sMessage = Error.Where & ": " & Error.Text Response.Begin() Response.ContentType = "text/plain;charset=utf-8" Print "<pre>"; sMessage; "</pre>" Response.End()
(2) Anzeige der Request- und Response-Header in einem Browser
Die Anzeige der Request- und Response-Header in einem Browser wie Firefox ist etwas umständlich:
Beispiel für Request- und Response-Header:
Anfrage-Kopfzahlen (401 B):
GET /~hans/cgi-bin/wp_report_sqlite3.gambas HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: de,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Upgrade-Insecure-Requests: 1 Cache-Control: max-age=0
Antwortkopfzeilen (176 B):
HTTP/1.1 200 OK Content-type: text/html;charset=utf-8 Content-Length: 12070 Date: Fri, 13 Nov 2020 17:47:21 GMT Server: lighttpd/1.4.55
Mit der Methode Response.AddHeader(…) sind Sie in der Lage eigene Header in die Antwort einzufügen.
Abbildung 24.6.5.3.1: Netzwerkanalyse für www.gambas-buch.de
Wenn Sie statt des Reiters 'Kopfzeilen' auf den daneben liegenden Reiter 'Cookies' wechseln, dann werden Ihnen die für die aktuelle Webseite gesetzten Cookies angezeigt.
(3) Cookies setzen oder löschen.
Mit den Methoden Response.SetCookie(…) und Response.RemoveCookie(…) können Sie einen Cookie setzen oder löschen.
Artikel