Anfang des InhaltsbereichsFunktionsdokumentation Zugriff auf Header-Felder Dokument im Navigationsbaum lokalisieren

Verwendung

Über GET_HEADER_FIELD() / GET_HEADER_FIELDS() hat der HTTP-Request-Handler Zugriff auf alle Attribute des HTTP-Headers (Name/Wert-Paare). Beispiele sind die Attribute content-length und content-type.

Die Methoden SET_HEADER_FIELD() und SET_HEADER_FIELDS() können genutzt werden, um den Request-Header zu modifizieren, falls notwendig (z.B. falls die Rolle HTTP-Client ist oder ein Request um zusätzliche Informationen ergänzt werden oder zurückgeschrieben werden muss).

Achtung

Es gibt Header-Felder, die nicht mit der Methode SET_HEADER_FIELD() gesetzt werden sollen. In der Beschreibung der einzelnen Header-Felder ist vermerkt, wie der Zugriff erfolgen soll.

Auf alle Felder des HTTP-Headers, die als Teil eines Requests gesendet werden, kann direkt über die genannten Methoden zugegriffen werden. Sie können adressiert werden durch deren case-insensitive Bezeichnungen (z. B. „content-type" für das Content-Typ-Attribut des HTTP-Headers). Eine Liste von typischen Feldern des HTTP-Headers kann in der HTTP/1.1 Spezifikation nachgelesen werden.

Zusätzlich zu diesen Feldern gibt es einige Felder, die keine reinen Feld-Attribute des HTTP-Headers sind, aber aus der HTTP-Request-Zeile abgeleitet werden können. Diese Felder werden Pseudo-Header-Felder genannt. Ein typisches Beispiel ist der Query-String-Teil einer URL oder die Methode des Requests (z. B. GET oder POST). Um Pseudo-Header-Felder von echten Header-Feldern unterscheiden zu können, beginnen die Pseudo-Header-Felder mit einem ~-Zeichen (Tilde) (z.B. ~query_string).

Funktionsumfang

Die folgenden SAP-spezifischen HTTP-Header-Felder wurden zusätzlich im Rahmen des SAP Web Application Servers eingeführt. Diese Felder sind nur im HTTP Request-Objekt verwendet und können dort über die Methode IF_HTTP_REQUEST~GET_HEADER_FIELD() abgerufen werden. Die Felder enthalten Server-spezifische Umgebungsinformationen, die direkt oder indirekt aus dem HTTP-Request abgeleitet sind, dort aber nicht über die Standard-HTTP-Header-Felder abgedeckt werden. Die meisten Felder sind in Anlehnung an die entsprechenden CGI (Common Gateway Interface) Umgebungsvariablen benannt.

Alle Header-Felder sind case-insensitiv und beginnen mit dem reservierten Zeichen "~".

Vordefinierte String-Konstanten für alle SAP-spezifischen HTTP-Header-Felder sind über das Interface IF_HTTP_HEADER_FIELD_SAP verfügbar.

Hinweis

Die kursiv geschriebenen SAP-Header-Felder sollen nicht mit der Methode SET_HEADER_FIELD() verändert werden! Am Ende der Beschreibung wird die Zugriffsart angegeben.

Header Field Name

Beschreibung

~content_data

Enthält im Falle von Multipart-Entities (z.B. bei File-Upload aus HTML Formularen) bei nicht-binären Multipart-Segmenten den Body des Segmentes.

~content_disposition

Enthält im Falle von Multipart-Entities beim File-Upload aus HTML Formularen die Content Disposition (Typ des Segmentes, Name des Segmentes, [Filename des Segmentes]).

Hinweis Ändern Sie den Wert nicht! Sie können den Wert mit der Methode GET_HEADER_FIELD() abfragen.

~content_filename

Enthält im Falle von Multipart-Entities beim File-Upload aus HTML Formularen den Namen der Datei, wie er im HTML Formular eingegeben oder aus der File-Auswahl-Dialogbox selektiert wurde.

Hinweis Ändern Sie den Wert nicht! Sie können den Wert mit der Methode GET_HEADER_FIELD() abfragen.

~content_name

Enthält im Falle von Multipart-Entities bei HTML Formularen den Namen des Eingabefeldes/HTML Controls, dessen Wert über ~content_data von derselben Entity ermittelt werden kann.

Hinweis Ändern Sie den Wert nicht! Sie können den Wert mit der Methode GET_HEADER_FIELD() abfragen.

~path

Enthält den "escape"ten Pfadnamen aus der Request URI/URL (ohne Query-String), also z.B. "/sap/bc/bsp/sap/it00/default.htm" aus "/sap(XYasfduy===)/bc/bsp/sap/it00/default.htm?x=1&y=2". Vergleiche auch ~path_translated und ~path_translated_expanded

~path_info

Enthält innerhalb eines HTTP Request Handlers (siehe Interface IF_HTTP_EXTENSION) den URL-Suffix, der hinter dem URL Präfix, der zur Ausführung des Request Handlers geführt hat, steht. Somit ergibt sich:

~script_name + ~path_info = ~path_translated

Beispiel

Ist der Request-Handler z.B. unter der URL "/sap/bc/bsp" registriert (siehe Transaktion Verwendung des ICF), so wird für die Request-URL "/sap/bc/bsp/sap/it00/default.htm" diese Variable den Wert "/sap/it00/default.htm" haben.

Ist ein interner oder externer Alias, z.B. "myApp", auf "/sap/bc/bsp/sap" zeigend angelegt und der Zugriff erfolgt im Request über diesen Alias – also "/myApp/it00/default.htm", so ist diese Variable auf den Wert "/it00/default.htm" gesetzt (vgl. ~path_info_expanded !)

~path_info_expanded

Enthält innerhalb eines HTTP Request Handlers (siehe Interface IF_HTTP_EXTENSION) den URL-Suffix, der hinter dem expandierten URL Präfix, der zur Ausführung des Request Handlers geführt hat, steht. Somit ergibt sich:
~script_name_expanded + ~path_info_expanded = ~path_translated_expanded

Beispiel

Ist der Request-Handler z.B. unter der URL "/sap/bc/bsp" registriert (siehe Transaktion SICF), so wird für die Request-URL "/sap/bc/bsp/sap/it00/default.htm" diese Variable den Wert "/sap/it00/default.htm " haben.

Ist ein interner oder externer Alias, z.B. "myApp", auf "/sap/bc/bsp/sap" zeigend angelegt und der Zugriff erfolgt im Request über diesen Alias – also "/myApp/it00/default.htm", so ist diese Variable auf den Wert "/sap/it00/default.htm" gesetzt (vgl. ~path_info !)

~path_translated

Enthält den "unescape"ten Pfadnamen aus der Request URI/URL (ohne Query-String), also z.B. "/sap/bc/bsp/sap/it00/default.htm" aus "/sap(XYasfduy===)/bc/bsp/sap/it00/default.htm?x=1&y=2". Vergleiche auch ~path und ~path_translated_expanded

~path_translated_expanded

Enthält den expandierten, "unescape"ten Pfadnamen, der aus der Request URI/URL durch Auflösung der internen bzw. externen Aliases entsteht.

Beispiel

Ist ein interner oder externer Alias, z.B. "myApp", auf "/sap/bc/bsp" zeigend angelegt und der Zugriff erfolgt im Request über diesen Alias – also "/myApp(XZasfduz===)/sap/it00/default.htm", so ist diese Variable auf den Wert "/sap/bc/bsp/sap/it00/default.htm" gesetzt

~query_string

Enthält den "URL-escape"ten Query-String aus der Request URI eines HTTP-Requests, d.h. der Teilstring nach dem ersten Fragezeichen, also z.B. "name=Walt+Whitman&street=Oxford+Street" aus "http://server:8080/sap/bc/ping? name=Walt+Whitman&street=Oxford+Street"

Hinweis Wenn Sie den Query-String ändern wollen, setzen Sie die einzelnen Formfelder. Verwenden Sie hierzu die Methode SET_FORMFIELD bzw. SET_FORMFIELDS des Interfaces IF_HTTP_ENTITY.

~remote_addr

Enthält die IP-Adresse des HTTP Clients, wenn ohne HTTP Proxy auf den Server zugegriffen wurde, ansonsten die IP-Adresse des letzten Proxies in der Proxy-Kette vor dem Server.

~request_line

Enthält die komplette HTTP Request-Line des Requests, also z.B. "GET /sap/bc/ping?param=2 HTTP/1.1"

Hinweis Wenn Sie Änderungen an der Request-Line vornehmen wollen, so verwenden Sie die entsprechenden Methoden zur Manipulation der einzelnen Komponenten der Request-Line.

~request_method

Enthält die HTTP Methode aus der HTTP Request-Line des Requests, also z.B. "GET", "POST" oder "PUT" etc.

~request_uri

Enthält die komplette URI aus der HTTP Request-Line des Requests, also z.B. "/sap/bc/ping?param=2" aus "GET /sap/bc/ping?param=2 HTTP/1.1"

Hinweis Wenn Sie Änderungen an der Request-URI vornehmen wollen, so verwenden Sie die entsprechenden Methoden zur Manipulation der einzelnen Komponenten der Request-Line.

~response_line

Enthält die komplette HTTP Response-Line (Status Line) einer empfangenen HTTP Response, also z.B. "HTTP/1.1 200 OK".

Hinweis Wenn Sie Änderungen an der Response-Line vornehmen wollen, so verwenden Sie die entsprechenden Methoden zur Manipulation der einzelnen Komponenten der Response-Line.

~script_name

Enthält innerhalb eines HTTP Request Handlers (siehe Interface IF_HTTP_EXTENSION) den URL-Präfix, der zur Ausführung des Request Handlers geführt hat.

Ist der Request-Handler z.B. unter der URL "/sap/bc/bsp" registriert (siehe Transaktion SICF), so wird für die Request-URL "/sap/bc/bsp/sap/it00/default.htm" diese Variable den Wert "/sap/bc/bsp" haben.

Ist ein interner oder externer Alias, z.B. "myApp", auf "/sap/bc/bsp" zeigend angelegt und der Zugriff erfolgt im Request über diesen Alias – also "/myApp/sap/it00/default.htm", so ist diese Variable auf den Wert "/myApp" gesetzt (vgl. ~script_name_expanded !)

~script_name_expanded

Enthält innerhalb eines HTTP Request Handlers (siehe Interface IF_HTTP_EXTENSION) den URL-Präfix, der zur Ausführung des Request Handlers geführt hat.

Beispiel

Ist der Request-Handler z.B. unter der URL "/sap/bc/bsp" registriert (siehe Transaktion SICF), so wird für die Request-URL "/sap/bc/bsp/sap/it00/default.htm" diese Variable den Wert "/sap/bc/bsp" haben.

Ist allerdings ein interner oder externer Alias, z.B. "myApp", auf "/sap/bc/bsp" zeigend angelegt und der Zugriff erfolgt im Request über diesen Alias – also "/myApp/sap/it00/default.htm", so ist diese Variable im Gegensatz zur Variablen ~script_name nicht auf den "/myApp" gesetzt, sondern auf den "expandierten" Präfix "/sap/bc/bsp".

~server_name

Enthält den Namen des Servers, der den Request empfangen hat

~server_port

Enthält die Portnummer, über die der Request empfangen wurde

~server_protocol

Enthält das Protokoll aus der HTTP Request-Line, also z.B. "HTTP/1.0" oder "HTTP/1.1".

~status_code

Enthält im Falle einer HTTP-Response (Client) den HTTP- Statuscode, also z.B. 200 (OK).

Hinweis Verwenden Sie nicht die Methode SET_HEADER_FIELD(), um den HTTP-Status zu setzen. Benutzen Sie die Methode SET_STATUS() des Interfaces IF_HTTP_RESPONSE.

~status_reason

Enthält im Falle einer HTTP-Response (Client) den beschreibenden Text des HTTP-Statuscodes, also z.B. "OK" (200) oder "Not Found" (401). Eine Liste aller Statustexte ist in Form von Konstanten auf im Interface IF_HTTP_STATUS definiert.

Hinweis Verwenden Sie nicht die Methode SET_HEADER_FIELD(), um den HTTP-Status zu setzen. Benutzen Sie die Methode SET_STATUS() des Interfaces IF_HTTP_RESPONSE.

~uri_scheme

Enthält das URI-Schema aus der URL, also z.B. "http" oder "https".

Genauer: Das Feld enthält den String, der zu Beginn der URL vor dem :// steht. Dies muss beim Arbeiten mit Proxies nicht das verwendete Protokoll sein!

Hinweis Es wird nicht empfohlen, dieses Feld zur Unterscheidung zwischen HTTP und HTTPS zu verwenden! Verwenden Sie deshalb, wenn Sie abfragen wollen, ob es sich um eine HTTPS-Verbindung handelt, das Attribut SSL_ACTIVE des Server-Objekts ab (vgl. IF_HTTP_SERVER).

 

Siehe auch:

Die bekannten HTTP-Header-Felder sind im Interface IF_HTTP_HEADER_FIELDS mit Initialwerten festgelegt, die SAP-spezifischen Header-Felder finden Sie im Interface IF_HTTP_HEADER_FIELDS_SAP.

Ende des Inhaltsbereichs