Referenzinformationen zur Caching-Proxy-API
Variablen
Beim Schreiben von
API-Programmen können Sie
Caching-Proxy-Variablen verwenden, die Informationen zum fernen Client- und Serversystem bereitstellen.
Anmerkungen:
- Benutzerdefinierte Variablennamen dürfen nicht das Präfix
SERVER_ verwenden.
Die Caching-Proxy-API-Funktion reserviert alle Variablen, die mit
SERVER_ beginnen. Daher sind diese Variablen schreibgeschützt.
Außerdem sind die Präfixe
HTTP_
und PROXY_ für HTTP-Header reserviert.
- Alle vom Client gesendeten Anforderungsheader
(z. B. "Set-Cookie") verwenden das Präfix
HTTP_ und ihre Werte können extrahiert werden.
Damit der Zugriff auf Variablen möglich ist, die Anforderungsheader sind,
setzen Sie das Präfix HTTP_ vor
den Variablennamen. Sie können außerdem neue Variablen verwenden, indem Sie die vordefinierte Funktion
httpd_setvar() verwenden. Ausführliche Informationen zu diesen Headern finden Sie im Abschnitt
Rückkehrcodes von vordefinierten Funktionen und Makros.
- Mit den beiden Variablenpräfixen
HTTP_ und PROXY_ wird angegeben, ob eine Variable für die Header der Anforderung oder der Antwort gilt.
Das Präfix
HTTP_ bezieht sich auf Variablen, die zwischen dem Client und
Caching Proxy fließen.
Das Präfix
PROXY_ bezieht sich auf Variablen, die zwischen
Caching Proxy und dem Ursprungsserver (oder dem nächsten Server in einer Kette von Proxy-Servern) fließen.
Diese Variablen gelten nur für die Dauer der Schritte zur
Anforderungsverarbeitung.
- Wenn Sie eine Variable mit dem Präfix
HTTP_* extrahieren, erhalten Sie den Wert eines Headers,
der in der Anforderung des Clients an den Proxy-Server enthalten war.
- Wenn Sie eine Variable mit dem Präfix
HTTP_* festlegen, wird der Antwortheader festgelegt, der vom Proxy-Server an den Client gesendet wird.
- Wenn Sie eine Variable mit dem Präfix
PROXY_* extrahieren, erhalten Sie den Wert eines Headers,
der vom Content-Server an den
Proxy-Server zurückgegeben wurde.
- Wenn Sie eine Variable mit dem Präfix
PROXY_* festlegen, wird der Anforderungsheader
festgelegt, der vom Proxy-Server an den Content-Server (oder den nächsten Server in einer Kette von Proxy-Servern)
gesendet wird.
Abb. 2 veranschaulicht
die Verwendung dieser
Präfixe bei der Ausführung einer Clientanforderung durch
Caching Proxy.
Legende: 1—Clientmaschine 2—Caching Proxy 3—Ursprungsserver
- Einige Variablen sind schreibgeschützt. Schreibgeschützte Variablen stellen Werte dar,
die Sie aus einer Anforderung oder einer Antwort extrahieren und in der vordefinierten
Funktion
httpd_getvar() verwenden können.
Wenn Sie versuchen, schreibgeschützte Variablen mit der Funktion
httpd_setvar() zu ändern, wird
der Rückkehrcode
HTTPD_READ_ONLY angezeigt.
- Variablen, die nicht als schreibgeschützt gekennzeichnet sind,
können in der vordefinierten Funktion httpd_getvar() oder
httpd_setvar() gelesen und festgelegt werden. Diese Variablen stellen Werte dar, die Sie
aus einer Anforderung oder aus einer Antwort
extrahieren können, oder Werte, die Sie während der Verarbeitung einer Anforderung oder Antwort festlegen oder erstellen können.
Variablendefinitionen
Anmerkung:
Headervariablen, die nicht mit dem Präfix
HTTP_ oder PROXY_ beginnen, sind mehrdeutig.
Zur Vermeidung der Mehrdeutigkeit sollten Sie mit den Variablennamen für Header
immer das Präfix HTTP_ oder PROXY_ verwenden.
- ACCEPT_RANGES
- Enthält den Wert für den Antwortheader
"Accept-Ranges", der angibt, ob der Content-Server auf Anforderungen nach Bereichen antworten kann.
Verwenden Sie PROXY_ACCEPT_RANGES, um den Headerwert zu extrahieren, der vom Content-Server an den Proxy gesendet wird.
Verwenden Sie
HTTP_ACCEPT_RANGES, um den Headerwert festzulegen, der vom Proxy an den Client gesendet wird.
Anmerkung:
ACCEPT_RANGES ist mehrdeutig. Zur Vermeidung der Mehrdeutigkeit sollten Sie stattdessen
HTTP_ACCEPT_RANGES und PROXY_ACCEPT_RANGES verwenden.
- ALL_VARIABLES
- Schreibgeschützt. Enthält alle CGI-Variablen. Beispiel:
ACCEPT_RANGES BYTES
CLIENT_ADDR 9.67.84.3
- AUTH_STRING
- Schreibgeschützt. Wenn der Server die Clientauthentifizierung unterstützt, enthält diese Zeichenfolge
die nicht decodierten Berechtigungsnachweise, die für die Authentifizierung des Clients verwendet werden sollen.
- AUTH_TYPE
- Schreibgeschützt. Wenn der Server die Clientauthentifizierung unterstützt und
das Script geschützt ist, enthält diese Variable die Methode, die für die Authentifizierung des Clients verwendet wird.
Beispiel: Basic.
- CACHE_HIT
- Schreibgeschützt. Legt fest, ob die Proxy-Anforderung im Cache gefunden oder nicht gefunden wurde.
Folgende Werte können zurückgegeben werden:
- 0 - Die Anforderung wurde nicht im Cache gefunden.
- 1 - Die Anforderung wurde im Cache gefunden.
- CACHE_MISS
- Nur Schreiben. Wird verwendet, um einen Cachefehltreffer zu erzwingen.
Folgende Werte sind gültig:
- 0 - Keinen Cachefehltreffer erzwingen.
- 1 - Einen Cachefehltreffer erzwingen.
- CACHE_TASK
- Schreibgeschützt. Gibt an, ob der Cache verwendet wurde. Folgende Werte können zurückgegeben werden:
- 0 - Die Anforderung hat nicht auf den Cache zugegriffen oder den Cache aktualisiert.
- 1 - Die Anforderung wurde aus dem Cache bereitgestellt.
- 2 - Das angeforderte Objekt war im Cache vorhanden, musste jedoch revalidiert werden.
- 3 - Das angeforderte Objekt war nicht im Cache vorhanden und wurde eventuell hinzugefügt.
Diese Variable kann in den Schritten
"PostAuthorization", "PostExit", "ProxyAdvisor" oder "Log" verwendet werden.
- CACHE_UPDATE
- Schreibgeschützt. Zeigt an, ob die Proxy-Anforderung den Cache aktualisiert hat.
Folgende Werte können zurückgegeben werden:
- 0 - Der Cache wurde nicht aktualisiert.
- 1 - Der Cache wurde aktualisiert.
- CLIENT_ADDR oder CLIENTADDR
- Entspricht REMOTE_ADDR.
- CLIENTMETHOD
- Entspricht REQUEST_METHOD.
- CLIENT_NAME oder CLIENTNAME
- Entspricht REMOTE_HOST.
- CLIENT_PROTOCOL oder CLIENTPROTOCOL
- Enthält den Namen und die Version des Protokolls, das der Client verwendet, um die Anforderung zu stellen.
Beispiel: HTTP/1.1.
- CLIENT_RESPONSE_HEADERS
- Schreibgeschützt. Gibt einen Puffer mit den
Headern zurück, die der Server an den Client sendet.
- CONNECTIONS
- Schreibgeschützt. Enthält die Anzahl der Verbindungen, die bedient werden, oder die Anzahl der aktiven Anforderungen.
Beispiel: 15.
- CONTENT_CHARSET
- Zeichensatz der Antwort für
"text/*", z. B. US ASCII. Diese Variable kann für den vom Client gesendeten
Header "content-charset" extrahiert werden
und für den Header
"content-charset" in der Anforderung an den Content-Server festgelegt werden.
- CONTENT_ENCODING
- Gibt die im Dokument verwendete
Codierung an, z. B. x-gzip. Diese Variable kann für den vom Client gesendeten
Header "content-encoding" extrahiert werden.
Wenn diese Variable festgelegt wird, wird dadurch der Header "content-encoding" in der Anforderung an den Content-Server bestimmt.
- CONTENT_LENGTH
- Diese Variable kann für den Header in der Anforderung vom Client
extrahiert werden.
Wenn die Variable festgelegt wird, wird dadurch der
Wert des Headers in der Anforderung an den Content-Server bestimmt.
Anmerkung:
CONTENT_LENGTH ist mehrdeutig. Zur Vermeidung der Mehrdeutigkeit sollten Sie stattdessen
HTTP_CONTENT_LENGTH und PROXY_CONTENT_LENGTH verwenden.
- CONTENT_TYPE
- Diese Variable kann für den Header in der Anforderung vom Client
extrahiert werden.
Wenn die Variable festgelegt wird, wird dadurch der
Wert des Headers in der Anforderung an den Content-Server bestimmt.
Anmerkung:
CONTENT_TYPE ist mehrdeutig. Zur Vermeidung der Mehrdeutigkeit sollten Sie stattdessen
HTTP_CONTENT_TYPE und PROXY_CONTENT_TYPE verwenden.
- CONTENT_TYPE_PARAMETERS
- Enthält andere
MIME-Attribute, aber nicht den Zeichensatz. Diese Variable kann für den Header der Clientanforderung
extrahiert werden.
Wenn die Variable festgelegt wird, wird dadurch der Wert des
Headers in der Anforderung an den Content-Server bestimmt.
- DOCUMENT_URL
- Enthält die URL (Uniform Request Locator). Beispiel:
http://www.anynet.com/~userk/main.htm
- DOCUMENT_URI
- Entspricht DOCUMENT_URL.
- DOCUMENT_ROOT
- Schreibgeschützt. Enthält den Pfad des
Dokumentstammverzeichnisses, der in den "Pass"-Regeln definiert wird.
- ERRORINFO
- Gibt den Fehlercode an, damit die Fehlerseite ermittelt werden kann.
Beispiel: blocked.
- EXPIRES
- Legt fest, wann die im Proxy-Cache gespeicherten Dokumente verfallen.
Diese Variable kann für den Header der Clientanforderung
extrahiert werden.
Wenn die Variable festgelegt wird, wird dadurch der
Wert des
Headers in der Anforderung an den Content-Server bestimmt.
Beispiel:
Mon, 01 Mar 2002 19:41:17 GMT
- GATEWAY_INTERFACE
- Schreibgeschützt. Enthält die Version der API, die der Server verwendet.
Beispiel: ICSAPI/2.0.
- GC_BIAS
- Nur Schreiben. Dieser Gleitkommawert wirkt sich auf die Garbage-Collection-Entscheidung für die Datei aus,
für die die Garbage-Collection in Betracht gezogen wird.
Der eingegebene Wert wird mit der Qualitätseinstellung von
Caching Proxy für den betreffenden Dateityp multipliziert, um die Klassifizierung zu bestimmen.
Qualitätseinstellungen werden von
0.0 bis 0.1 klassifiziert und werden mit der Anweisung
"AddType" in der Proxy-Konfigurationsdatei
(ibmproxy.conf) definiert.
- GC_EVALUATION
- Nur Schreiben. Dieser Gleitkommawert legt fest, ob die Datei, die für die Garbage-Collection in Betracht gezogen wird,
entfernt (0.0) oder beibehalten werden soll
(1.0).
Die Werte zwischen 0.0 und 1.0 sind nach ihrer Rangordnung klassifiziert. Eine Datei mit dem Wert 0.1 für
GC_EVALUATION wird mit höherer
Wahrscheinlichkeit entfernt als eine Datei mit dem Wert 0.9 für
GC_EVALUATION.
- GC_EXPIRES
- Schreibgeschützt. Legt fest, nach wie vielen Sekunden die fragliche Datei im Cache verfällt.
Diese Variable kann nur von einem GC-Advisor-Plug-in extrahiert werden.
- GC_FILENAME
- Schreibgeschützt. Gibt die Datei an, die für die Garbage-Collection in Betracht gezogen wird.
Diese Variable kann nur von einem GC-Advisor-Plug-in extrahiert werden.
- GC_FILESIZE
- Schreibgeschützt. Gibt die Größe der Datei an, die für die Garbage-Collection in Betracht gezogen wird.
Diese Variable kann nur von einem GC-Advisor-Plug-in extrahiert werden.
- GC_LAST_ACCESS
- Schreibgeschützt. Gibt an, wann der letzte Zugriff
auf die Datei erfolgte. Diese Variable kann nur von einem GC-Advisor-Plug-in extrahiert werden.
- GC_LAST_CHECKED
- Schreibgeschützt. Gibt an, wann die letzte Prüfung
der Dateien erfolgte. Diese Variable kann nur von einem GC-Advisor-Plug-in extrahiert werden.
- GC_LOAD_DELAY
- Schreibgeschützt. Gibt an, wie lange das Abrufen der Datei gedauert hat. Diese Variable kann nur von einem GC-Advisor-Plug-in extrahiert werden.
- HTTP_COOKIE
- Wenn sie gelesen wird, enthält diese Variable
den Wert des vom Client festgelegten
Headers "Set-Cookie".
Mit dieser Variablen kann auch ein neues Cookie im Antwortdatenstrom
(zwischen dem Proxy und dem Client) festgelegt werden. Wenn diese Variable festgelegt wird,
wird im Datenstrom der Dokumentanforderung ein neuer Header des Typs
"Set-Cookie" erstellt, unabhängig davon, ob bereits ein solcher Header existiert oder nicht.
- HTTP_HEADERS
- Schreibgeschützt. Hiermit werden alle Header der Clientanforderung abgerufen.
- HTTP_REASON
- Wird diese Variable festgelegt, wird dadurch
die Ursachenzeichenfolge in der HTTP-Antwort bestimmt.
Außerdem wird dadurch die Ursachenzeichenfolge in der Proxy-Antwort an den Client bestimmt.
Wird diese Variable extrahiert, wird die Ursachenzeichenfolge in der Antwort vom Content-Server an den Proxy zurückgegeben.
- HTTP_RESPONSE
- Wird diese Variable festgelegt, wird dadurch der
Antwortcode in der HTTP-Antwort bestimmt.
Außerdem wird in diesem Fall der Statuscode in der Proxy-Antwort an den Client bestimmt.
Wird diese Variable extrahiert, wird der Statuscode in der Antwort vom Content-Server an den Proxy zurückgegeben.
- HTTP_STATUS
- Enthält den HTTP-Antwortcode und die Ursachenzeichenfolge, z. B. 200 OK.
- HTTP_USER_AGENT
- Enthält den Wert des Anforderungsheaders
"User-Agent", bei dem es sich um den Namen des Web-Browsers auf dem Client handelt, z. B.
Netscape Navigator / V2.02. Wird diese Variable festgelegt, wird dadurch der
Header in der Proxy-Antwort an den Client bestimmt.
Wird diese Variable extrahiert, bezieht sie sich
auf den Header aus der Clientanforderung.
- INIT_STRING
- Schreibgeschützt. Die Anweisung
"ServerInit" definiert diese Zeichenfolge. Diese Variable kann nur während des Schritts
"Server Initialization" gelesen werden.
- LAST_MODIFIED
- Diese Variable kann für den Header der Clientanforderung
extrahiert werden.
Wenn die Variable festgelegt wird, wird dadurch der
Wert des Headers in der Anforderung an den Content-Server bestimmt.
Beispiel:
Mon, 01 Mar 1998 19:41:17 GMT
- LOCAL_VARIABLES
- Schreibgeschützt. Alle benutzerdefinierten Variablen.
- MAXACTIVETHREADS
- Schreibgeschützt. Die maximale Anzahl aktiver Threads.
- NOTMODIFIED_TO_OK
- Erzwingt eine vollständige Antwort an den Client. Gültig in den Schritten
"PreExit" und "ProxyAdvisor".
- ORIGINAL_HOST
- Schreibgeschützt. Gibt den Hostnamen oder die IP-Zieladresse einer Anforderung zurück.
- ORIGINAL_URL
- Schreibgeschützt. Gibt die in der Clientanforderung gesendete Ursprungs-URL zurück.
- OVERRIDE_HTTP_NOTRANSFORM
- Ermöglicht die Änderung von Daten, wenn ein Header des Typs
"Cache-Control: no-transform" vorhanden ist.
Wird diese Variable festgelegt, wird dadurch der
Header in der Antwort an den Client bestimmt.
- OVERRIDE_PROXY_NOTRANSFORM
- Ermöglicht die Änderung von Daten, wenn ein Header des Typs
"Cache-Control: no-transform" vorhanden ist.
Wird diese Variable festgelegt, wird dadurch die
Anforderung an den Content-Server bestimmt.
- PASSWORD
- Enthält für die Basisauthentifizierung das entschlüsselte Kennwort.
Beispiel password.
- PATH
- Enthält den vollständig übersetzten Pfad.
- PATH_INFO
- Enthält zusätzliche Pfadinformationen, die vom Web-Browser gesendet wurden.
Beispiel: /foo.
- PATH_TRANSLATED
- Enthält die entschlüsselte und übersetzte Version der in
PATH_INFO enthaltenen Pfadinformationen.
Beispiel:
d:\wwwhome\foo
/wwwhome/foo
- PPATH
- Enthält den teilweise übersetzten Pfad. Verwenden Sie diese Variable im Schritt
"Name Translation".
- PROXIED_CONTENT_LENGTH
- Schreibgeschützt. Gibt die Länge der Antwortdaten zurück, die tatsächlich über den Proxy-Server übertragen wurden.
- PROXY_ACCESS
- Legt fest, ob die Anforderung eine Proxy-Anforderung ist.
Beispiel: NO.
- PROXY_CONTENT_TYPE
- Enthält den Header
"Content-Type" der Proxy-Anforderung, die über HTTPD_proxy() ausgeführt wurde.
Wenn Informationen mit der Methode POST gesendet werden, enthält diese Variable den Typ der enthaltenen Daten.
Sie können in der Konfigurationsdatei des Proxy-Servers einen
eigenen Inhaltstyp erstellen und einem Viewer zuordnen.
Diese Variable kann für den Headerwert in der Antwort vom Content-Server
extrahiert werden
und für den Header in
der Anforderung an den Content-Server festgelegt werden.
Beispiel:
application/x-www-form-urlencoded
- PROXY_CONTENT_LENGTH
- Der Header
"Content-Length" der Proxy-Anforderung, die über HTTPD_proxy() ausgeführt wurde.
Wenn Informationen mit der Methode POST gesendet werden, enthält diese Variable die Anzahl der Datenzeichen.
Die Server senden normalerweise kein Flag für Dateiende, wenn sie Informationen
unter Verwendung der Standardeingabe weiterleiten.
Falls erforderlich, können Sie den Wert
CONTENT_LENGTH verwenden, um das Ende der Eingabezeichenfolge zu ermitteln.
Diese Variable kann für den Headerwert in der Antwort vom Content-Server
extrahiert werden
und für den Header in
der Anforderung an den Content-Server festgelegt werden.
Beispiel:
7034
- PROXY_COOKIE
- Wenn sie gelesen wird, enthält diese Variable
den Wert des vom Ursprungsserver festgelegten
Headers "Set-Cookie".
Sie kann auch verwendet werden, um im Anforderungsdatenstrom ein neues Cookie festzulegen.
Wenn diese Variable festgelegt wird,
wird im Datenstrom der Dokumentanforderung ein neuer Header des Typs
"Set-Cookie" erstellt, unabhängig davon, ob bereits ein solcher Header existiert oder nicht.
- PROXY_HEADERS
- Schreibgeschützt. Hiermit werden die Proxy-Header extrahiert.
- PROXY_METHOD
- Methode für die über HTTPD_proxy() ausgeführte Anforderung.
Diese Variable kann für den Headerwert in der Antwort vom Content-Server
extrahiert werden
und für den Header in
der Anforderung an den Content-Server festgelegt werden.
- QUERY_STRING
- Wenn Informationen mit der Methode GET gesendet werden, enthält diese Variable die Informationen,
die in einer Abfrage nach dem Fragezeichen (?) stehen.
Diese Informationen müssen vom CGI-Programm decodiert werden.
Beispiel:
NAME=Eugene+T%2E+Fox&ADDR=etfox%7Cibm.net&INTEREST=xyz
- RCA_OWNER
- Schreibgeschützt. Gibt den numerischen Werts des Knotens an, der Eigner des angeforderten Objekts war.
Diese Variable kann in den Schritten "PostExit", "ProxyAdvisor" und "Log" verwendet werden. Sie ist nur dann aussagekräftig,
wenn der Server Teil eines Cachebereichs ist, der den fernen Cachezugriff (RCA) verwendet.
- RCA_TIMEOUTS
- Schreibgeschützt. Gibt einen numerischen Wert zurück, der die (kumulierte)
Gesamtzahl der Zeitlimitüberschreitungen bei RCA-Anforderungen an alle Peers enthält.
Diese Variable kann in jedem Schritt verwendet werden.
- REDIRECT_*
- Schreibgeschützt. Enthält eine Umleitungszeichenfolge für den Fehlercode,
der dem Variablennamen entspricht (z. B.
REDIRECT_URL). Eine Liste gültiger Variablen des Typs
REDIRECT_ ist in der Onlinedokumentation für den Apache-Webserver unter
http://httpd.apache.org/docs-2.0/custom-error.html zu finden.
- REFERRER_URL
- Schreibgeschützt. Enthält die letzte URL-Position des Browsers. Mit dieser Variablen kann
für den Server die Adresse (URL) der Ressource angegeben werden, aus der die Anforderungs-URL abgerufen wurde.
Beispiel:
http://www.company.com/homepage
- REMOTE_ADDR
- Enthält die IP-Adresse des Web-Browsers, falls verfügbar. Beispiel: 45.23.06.8.
- REMOTE_HOST
- Enthält den Hostnamen des Web-Browsers, falls verfügbar. Beispiel: www.raleigh.ibm.com.
- REMOTE_USER
- Wenn der Server die Clientauthentifizierung unterstützt und
das Script geschützt ist, enthält diese Variable den Benutzernamen, der zur Authentifizierung übergeben wurde.
Beispiel: joeuser.
- REQHDR
- Schreibgeschützt. Enthält eine Liste der vom Client gesendeten Header.
- REQUEST_CONTENT_TYPE
- Schreibgeschützt. Gibt den Inhaltstyp für den Hauptteil der Anforderung zurück. Beispiel:
application/x-www-form-urlencoded
- REQUEST_CONTENT_LENGTH
- Schreibgeschützt. Wenn Informationen mit der Methode POST gesendet werden, enthält diese Variable die Anzahl der Datenzeichen.
Die Server senden normalerweise kein Flag für Dateiende, wenn sie Informationen
unter Verwendung der Standardeingabe weiterleiten.
Falls erforderlich, können Sie den Wert
CONTENT_LENGTH verwenden, um das Ende der Eingabezeichenfolge zu ermitteln.
Beispiel: 7034.
- REQUEST_METHOD
- Schreibgeschützt. Enthält die Methode (die mit dem Attribut
METHOD in einem HTML-Formular angegeben wurde), die zum Senden der Anforderung verwendet wird.
Beispiel: GET oder POST.
- REQUEST_PORT
- Schreibgeschützt. Gibt die in der URL angegebene Portnummer zurück oder einen Standardport, der auf dem Protokoll basiert.
- RESPONSE_CONTENT_TYPE
- Schreibgeschützt. Wenn Informationen mit der Methode POST gesendet werden, enthält diese Variable den Typ der enthaltenen Daten.
Sie können in der Konfigurationsdatei des Proxy-Servers einen
eigenen Inhaltstyp erstellen und einem Viewer zuordnen.
Beispiel: text/html.
- RESPONSE_CONTENT_LENGTH
- Schreibgeschützt. Wenn Informationen mit der Methode POST gesendet werden, enthält diese Variable die Anzahl der Datenzeichen.
Die Server senden normalerweise kein Flag für Dateiende, wenn sie Informationen
unter Verwendung der Standardeingabe weiterleiten.
Falls erforderlich, können Sie den Wert
CONTENT_LENGTH verwenden, um das Ende der Eingabezeichenfolge zu ermitteln.
Beispiel: 7034.
- RULE_FILE_PATH
- Schreibgeschützt. Enthält den vollständig qualifizierten Dateisystempfad und Dateinamen der Konfigurationsdatei.
- SSL_SESSIONID
- Schreibgeschützt. Gibt die SSL-Sitzungs-ID zurück, wenn die aktuelle Anforderung über eine
SSL-Verbindung empfangen wird.
Gibt NULL zurück, wenn die aktuelle Anforderung nicht über eine SSL-Verbindung empfangen wird.
- SCRIPT_NAME
- Enthält die URL der Anforderung.
- SERVER_ADDR
- Schreibgeschützt. Enthält die lokale IP-Adresse des Proxy-Servers.
- SERVER_NAME
- Schreibgeschützt. Enthält den Hostnamen des Proxy-Servers
oder die IP-Adresse des Content-Servers für diese Anforderung.
Beispiel: www.ibm.com.
- SERVER_PORT
- Schreibgeschützt. Enthält die Portnummer des Proxy-Servers, an den die Clientanforderung gesendet wurde.
Beispiel: 80.
- SERVER_PROTOCOL
- Schreibgeschützt. Enthält den Namen und die Version des Protokolls, das verwendet wurde, um die Anforderung zu stellen.
Beispiel: HTTP/1.1.
- SERVER_ROOT
- Schreibgeschützt. Enthält das Verzeichnis, in dem das Proxy-Serverprogramm installiert ist.
- SERVER_SOFTWARE
- Schreibgeschützt. Enthält den Namen und die Version des Proxy-Servers.
- STATUS
- Enthält den HTTP-Antwortcode und die Ursachenzeichenfolge, z. B. "200
OK".
- TRACE
- Legt fest, welche Menge an Informationen beim Trace aufgezeichnet wird. Folgende Werte können zurückgegeben werden:
- OFF - keine Traceerstellung.
- V - Modus "Verbose"
- VV - Modus "Very Verbose"
- MTV - Modus "Much Too Verbose"
- URI
- Lesen/Schreiben. Entspricht DOCUMENT_URL.
- URI_PATH
- Schreibgeschützt. Gibt für eine URI nur den Teil zurück, der den Pfad enthält.
- URL
- Lesen/Schreiben. Entspricht DOCUMENT_URL.
- URL_MD4
- Schreibgeschützt. Gibt den Dateinamen der potenziellen Cachedatei für die aktuelle Anforderung zurück.
- USE_PROXY
- Gibt den Proxy an, dem die aktuelle Anforderung zugeordnet werden soll.
Geben Sie die URL an.
Beispiel: http://myproxy:8080.
- USERID
- Entspricht REMOTE_USER.
- USERNAME
- Entspricht REMOTE_USER.
Authentifizierung und Berechtigung
Zunächst eine kurze Übersicht über die Terminologie:
- Authentifizierung
- Die Verifizierung der Sicherheitstoken, die dieser Anforderung zugeordnet sind,
um die Identität des Anfordernden festzustellen.
- Berechtigung
- Ein Prozess, der mit Hilfe von
Sicherheitstoken feststellt, ob der Anfordernde Zugriff auf die Ressource hat.
Abb. 3 veranschaulicht den Prozess der Authentifizierung und Berechtigung
des Proxy-Servers.
Wie in Abb. 3 gezeigt, ist die Initialisierung des Berechtigungsprozesses der erste Schritt
des Authentifizierungs- und Berechtigungsprozesses auf dem Server.
In Caching Proxy ist die Authentifizierung Teil des Berechtigungsprozesses. Sie findet nur dann statt, wenn eine Berechtigung erforderlich ist.
Prozess der Authentifizierung und Berechtigung
Bei der Verarbeitung einer Anforderung, für die eine Berechtigung erforderlich ist, befolgt
der Proxy-Server die folgenden Schritte.
-
Als Erstes prüft der
Proxy-Server seine Konfigurationsdatei, um festzustellen, ob eine Anweisung für Berechtigung (Authorization) vorhanden ist.
- Wenn eine solche Anweisung in der Konfigurationsdatei existiert, ruft der Server die in der Anweisung definierte
Berechtigungsfunktion (Authorization) auf und beginnt den Prozess der Authentifizierung mit Schritt
2.
- Wenn eine solche Anweisung nicht existiert, führt der Server eine Standardberechtigung durch und
fährt dann direkt mit den Authentifizierungsprozeduren in Schritt
3 fort.
-
Der Proxy-Server beginnt den Authentifizierungsprozess, indem er prüft, ob
der Header HTTP_authenticate in der Clientanforderung enthalten ist.
- Wenn der Header vorhanden ist, setzt der Server den Authentifizierungsprozess fort
(siehe Schritt 3).
- Wenn der Header nicht vorhanden ist, muss die Authentifizierung über eine andere Methode erfolgen.
-
Der Proxy-Server prüft, ob in der Proxy-Konfigurationsdatei eine Anweisung für Authentifizierung (Authentication)
vorhanden ist.
- Wenn eine solche Anweisung in der Konfigurationsdatei existiert, ruft der Server die in der Anweisung definierte
Authentifizierungsfunktion auf.
- Wenn eine solche Anweisung nicht existiert, führt der Server eine Standardauthentifizierung durch.
Wenn das Caching-Proxy-Plug-in einen eigenen Berechtigungsprozess bereitstellt,
überschreibt dieser Prozess
die Standardberechtigung und -authentifizierung auf dem Server.
Wenn daher Anweisungen für Berechtigung (Authorization) in Ihrer Konfigurationsdatei enthalten sind,
müssen die zugehörigen Plug-in-Funktionen auch die erforderliche Authentifizierung ausführen.
Die vordefinierte Funktion HTTPD_authenticate() wird zur Verwendung bereitgestellt.
Sie haben drei Möglichkeiten, um in Ihren Plug-ins für Berechtigung die Authentifizierung bereitzustellen:
- Schreiben Sie eigene Plug-ins für Berechtigung und Authentifizierung. Verwenden Sie in Ihrer
Proxy-Konfigurationsdatei sowohl die Anweisung "Authorization" als auch die Anweisung "Authentication", um diese
Funktionen festzulegen. Achten Sie darauf, dass Sie den Funktionsaufruf HTTPD_authenticate() in die
Plug-in-Funktion für Berechtigung aufnehmen.
Wenn der Schritt "Authorization" ausgeführt wird, führt er
Ihre Plug-in-Funktion für Berechtigung aus, die wiederum die Plug-in-Funktion für Authentifizierung aufruft.
- Schreiben Sie eine eigene Plug-in-Funktion für Berechtigung, die die Standardauthentifizierung des Servers aufruft.
Verwenden Sie in Ihrer
Proxy-Konfigurationsdatei die Anweisung "Authorization", um Ihre Funktion festzulegen.
In diesem Fall wird die Anweisung
"Authentication" nicht benötigt.
Achten Sie darauf, dass Sie in Ihrer Plug-in-Funktion für Berechtigung
die Funktion HTTPD_authenticate() aufrufen.
Wenn der Schritt "Authorization" ausgeführt wird, führt er
Ihre Plug-in-Funktion für Berechtigung aus, die wiederum die Standardauthentifizierung des Servers aufruft.
- Schreiben Sie eine eigene Plug-in-Funktion für Berechtigung, und nehmen Sie
den erforderlichen Authentifizierungsprozess in diese Funktion auf.
Verwenden Sie in Ihrem Plug-in für Berechtigung nicht die Funktion
HTTPD_authenticate().
Verwenden Sie in Ihrer
Proxy-Konfigurationsdatei die Anweisung "Authorization", um Ihr Plug-in für Berechtigung
festzulegen.
In diesem Fall wird die Anweisung
"Authentication" nicht benötigt.
Wenn der Schritt "Authorization" (Berechtigung) ausgeführt wird, führt er
Ihre Plug-in-Funktion für Berechtigung und die darin enthaltene Authentifizierung aus.
Wenn Ihr Caching-Proxy-Plug-in keinen eigenen Berechtigungsprozess bereitstellt,
können Sie wie folgt eine angepasste Authentifizierung festlegen:
- Schreiben Sie eine eigene Plug-in-Funktion für Authentifizierung. Verwenden Sie in Ihrer Proxy-Konfigurationsdatei die Anweisung "Authentication", um Ihre Funktion festzulegen.
In diesem Fall wird die Anweisung
"Authorization" nicht benötigt.
Wenn der Schritt "Authorization" ausgeführt wird, führt er
die Standardberechtigung des Servers aus, die wiederum die Plug-in-Funktion für Authentifizierung aufruft.
Beachten Sie folgende Punkte:
- Für den Fall, dass in
Ihrer Konfigurationsdatei keine Anweisung des Typs
"Authorization" existiert oder die dafür angegebenen Plug-in-Funktionen
die Ausführung der Anforderung verweigern, indem sie
HTTP_NOACTION zurückgeben, wird die Standardberechtigung des Servers ausgeführt.
- Wenn in Ihrer Konfigurationsdatei
Anweisungen des Typs "Authorization" vorhanden sind und ihre Plug-in-Funktionen
HTTPD_authenticate() enthalten, ruft der Server
die in den Anweisungen "Authentication" angegebenen Authentifizierungsfunktionen auf.
Für den Fall, dass keine Anweisungen
des Typs "Authentication" definiert wurden
oder die dafür angegebenen Plug-in-Funktionen
die Ausführung der Anforderung verweigern, indem sie
HTTP_NOACTION zurückgeben, wird die Standardauthentifizierung des Servers ausgeführt.
- Wenn in Ihrer Konfigurationsdatei
Anweisungen des Typs "Authorization" vorhanden sind, in den Plug-in-Funktionen aber
HTTPD_authenticate() nicht enthalten ist, werden vom Server keine
Authentifizierungsfunktionen aufgerufen.
Sie müssen selbst einen Authentifizierungsprozess als Teil Ihrer Plug-in-Funktionen für Berechtigung
schreiben oder Aufrufe anderer Authentifizierungsmodule festlegen.
- Caching Proxy generiert automatisch
eine Abfrage (die vom Browser eine Benutzer-ID und ein Kennwort anfordert),
wenn Ihre Berechtigungsfunktion den Code
401 oder 407 zurückgibt.
Damit diese Aktion korrekt ausgeführt wird, müssen Sie aber trotzdem einen Zugriffsschutz
in Caching Proxy konfigurieren.
Varianten-Caching
Verwenden Sie das Caching von Varianten, wenn Sie Daten zwischenspeichern möchten, die
eine modifizierte Form des Originaldokuments (URI) sind.
Caching Proxy kann Varianten verarbeiten, die
von der API generiert wurden.
Varianten
sind unterschiedliche Versionen eines Basisdokuments.
Wenn Ursprungsserver Varianten senden, kennzeichnen sie diese
im Allgemeinen nicht als solche.
Caching Proxy unterstützt nur Varianten, die von Plug-ins erstellt wurden (z. B. Codepagekonvertierung).
Wenn ein Plug-in eine Variante auf der Basis von Kriterien erstellt, die nicht im HTTP-Header enthalten sind,
muss es in den Schritt
"PreExit" oder "PostAuthorization" eine Funktion
einfügen, die einen Pseudoheader erstellt, damit
Caching Proxy die vorhandene Variante erkennen kann.
Verwenden Sie beispielsweise ein
Transmogrifier-API-Programm, um die von den Benutzern angeforderten Daten auf der Basis des
vom Browser gesendeten
Headers "User-Agent" zu modifizieren.
Verwenden Sie die Funktion
close,
um den modifizierten Inhalt in einer Datei zu speichern, oder
geben Sie in dieser Funktion eine Puffergröße an und übergeben Sie den Puffer als Datenargument.
Verwenden Sie anschließend die Funktionen für Varianten-Caching,
httpd_variant_insert() und httpd_variant_lookup(), um den Inhalt in den Cache zu stellen.
API-Beispiele
Als Starthilfe für das Schreiben eigener API-Funktionen für Caching Proxy
werden im Verzeichnis
samples der Installations-CD für
Edge Components Beispielprogramme für Sie
bereitgestellt. Weitere Informationen finden Sie auf der Website
zu WebSphere Application Server unter www.ibm.com/software/webservers/appserv/.