Inhaltsverzeichnis

24.6.5 Klasse Response

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.

24.6.5.1 Eigenschaften

Die Klasse Response verfügt über diese Eigenschaften:

EigenschaftDatentypBeschreibung
BufferedBooleanGibt 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.
ContentTypeStringGibt den MIME-Typ der Antwort zurück oder setzt den MIME-Typ.
StatusStringGibt 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

24.6.5.2 Methoden

Die Klasse Response verfügt über die folgenden Methoden:

MethodeRückgabetypBeschreibung
AddHeader ( Name As String, Value As String )StringFü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

24.6.5.3 Beispiele

(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.

B1

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.

Download