Informazioni di riferimento sulle API del Caching Proxy

Variabili

Durante la scrittura dei programmi API, è possibile utilizzare le variabili del Caching Proxy che forniscono informazioni sul sistema server e client remoto.

Note:

Definizioni delle variabili

Nota:
le variabili di intestazione che non cominciano con i prefissi HTTP_ o PROXY_ sono ambigue. Per evitare questa ambiguità, utilizzare sempre il prefisso HTTP_ o PROXY_ con i nomi delle variabili per le intestazioni.
ACCEPT_RANGES
Contiene il valore dell'intestazione di risposta Accept-Ranges, che specifica se il server dei contenuti può rispondere alle richieste di intervallo. Utilizzare PROXY_ACCEPT_RANGES per estrarre il valore dell'intestazione che viene inviata dal server dei contenuti al proxy. Utilizzare HTTP_ACCEPT_RANGES per impostare il valore dell'intestazione che viene inviata dal proxy al client.
Nota:
ACCEPT_RANGES è ambiguo. Per eliminare l'ambiguità, utilizzare HTTP_ACCEPT_RANGES e PROXY_ACCEPT_RANGES.
ALL_VARIABLES
Sola lettura. Contiene tutte le variabili CGI. Ad esempio:
     ACCEPT_RANGES BYTES
     CLIENT_ADDR 9.67.84.3
AUTH_STRING
Sola lettura. Se il server supporta l'autenticazione del client, questa stringa contiene le credenziali non codificate da utilizzare per l'autenticazione del client.
AUTH_TYPE
Sola lettura. Se il server supporta l'autenticazione del client e lo script è protetto, questa variabile contiene il metodo utilizzato per autenticare il client. Ad esempio, Basic.
CACHE_HIT
Sola lettura. Identifica se la richiesta proxy è stata trovata o meno nella cache. I valori restituiti includono quanto segue:
CACHE_MISS
Sola scrittura. Utilizzato per forzare un accesso alla cache non riuscito. I valori validi sono i seguenti:
CACHE_TASK
Sola lettura. Identifica se è stata utilizzata la cache. I valori restituiti includono quanto segue:

Questa variabile può essere utilizzata nelle fasi PostAuthorization, PostExit, ProxyAdvisor o Log.

CACHE_UPDATE
Sola lettura. Identifica se la richiesta proxy ha aggiornato o meno la cache. I valori restituiti includono quanto segue:
CLIENT_ADDR o CLIENTADDR
Uguale a REMOTE_ADDR.
CLIENTMETHOD
Uguale a REQUEST_METHOD.
CLIENT_NAME o CLIENTNAME
Uguale a REMOTE_HOST.
CLIENT_PROTOCOL o CLIENTPROTOCOL
Contiene il nome e la versione del protocollo che il client sta utilizzando per effettuare la richiesta. Ad esempio, HTTP/1.1.
CLIENT_RESPONSE_HEADERS
Sola lettura. Restituisce un buffer contenente le intestazioni che il server invia al client.
CONNECTIONS
Sola lettura. Contiene il numero di connessioni supportate o il numero di richieste attive. Ad esempio, 15.
CONTENT_CHARSET
Serie di caratteri della risposta per text/*, ad esempio, US ASCII . L'estrazione di questa variabile è valida per l'intestazione content-charset del client. La relativa impostazione influisce sull'intestazione content-charset nella richiesta al server dei contenuti.
CONTENT_ENCODING
Specifica la codifica utilizzata nel documento, ad esempio, x-gzip . L'estrazione di questa variabile si applica all'intestazione content-encoding del client. La relativa impostazione influisce sull'intestazione content-encoding nella richiesta al server dei contenuti.
CONTENT_LENGTH
L'estrazione di questa variabile si applica all'intestazione della richiesta del client. La relativa impostazione influisce sull'intestazione nella richiesta al server dei contenuti.

Nota:
CONTENT_LENGTH è ambiguo. Per eliminare l'ambiguità, utilizzare HTTP_CONTENT_LENGTH e PROXY_CONTENT_LENGTH.
CONTENT_TYPE
L'estrazione di questa variabile si applica all'intestazione della richiesta del client. La relativa impostazione influisce sull'intestazione nella richiesta al server dei contenuti.

Nota:
CONTENT_TYPE è ambiguo. Per eliminare l'ambiguità, utilizzare HTTP_CONTENT_TYPE e PROXY_CONTENT_TYPE.
CONTENT_TYPE_PARAMETERS
Contiene altri attributi MIME, ma non la serie di caratteri. L'estrazione di questa variabile si applica all'intestazione della richiesta del client. La relativa impostazione influisce sul valore dell'intestazione nella richiesta al server dei contenuti.
DOCUMENT_URL
Contiene l'URL (Uniform Request Locator). Ad esempio:
http://www.anynet.com/~userk/main.htm
DOCUMENT_URI
Uguale a DOCUMENT_URL.
DOCUMENT_ROOT
Sola lettura. Contiene il percorso della root del documento, come definito dalle regole di inoltro.
ERRORINFO
Specifica il codice di errore per determinare la pagina errore. Ad esempio, blocked.
EXPIRES
Definisce la data di scadenza dei documenti memorizzati in una cache del proxy. L'estrazione di questa variabile si applica all'intestazione della richiesta del client. La relativa impostazione influisce sul valore dell'intestazione nella richiesta al server dei contenuti. Ad esempio:
Mon, 01 Mar 2002 19:41:17 GMT
GATEWAY_INTERFACE
Sola lettura. Contiene la versione dell'API utilizzata dal server. Ad esempio, ICSAPI/2.0.
GC_BIAS
Sola scrittura. Questo valore a virgola mobile influenza la decisione di raccolta dei dati obsoleti per il file considerato per la raccolta. Il valore immesso è moltiplicato per l'impostazione di qualità di Caching Proxy per quel tipo di file per determinare la classificazione. Le impostazioni di qualità variano da 0.0 a 0.1 e sono definite dalle direttive AddType nel file di configurazione del proxy (ibmproxy.conf).
GC_EVALUATION
Sola scrittura. Questo valore a virgola mobile determina se rimuovere (0.0) o mantenere (1.0) il file considerato per la raccolta dei dati obsoleti. I valori compresi tra 0,0 e 1,0 vengono ordinati in base alla classificazione, vale a dire, è molto probabile che venga rimosso un file avente il valore GC_EVALUATION di 0,1 e non un file con il valore GC_EVALUATION di 0,9.
GC_EXPIRES
Sola lettura. Identifica quanti secondi devono trascorrere prima della scadenza del file in esame nella cache. Questa variabile può essere estratta solo da un plug-in Advisor GC.
GC_FILENAME
Sola lettura. Identifica il file preso destinato alla raccolta di dati inutili. Questa variabile può essere estratta solo da un plug-in Advisor GC.
GC_FILESIZE
Sola lettura. Identifica la dimensione del file destinato alla raccolta di dati inutili. Questa variabile può essere estratta solo da un plug-in Advisor GC.
GC_LAST_ACCESS
Sola lettura. Identifica la data dell'ultimo accesso al file. Questa variabile può essere estratta solo da un plugin Advisor GC.
GC_LAST_CHECKED
Sola lettura. Identifica l'ultimo controllo dei file. Questa variabile può essere estratta solo da un plugin Advisor GC.
GC_LOAD_DELAY
Sola lettura. Identifica il tempo necessario per richiamare il file. Questa variabile può essere estratta solo da un plug-in Advisor GC.
HTTP_COOKIE
Quando viene letta, questa variabile contiene il valore dell'intestazione Set-Cookie impostata dal client. Può essere utilizzata anche per impostare un nuovo cookie nel flusso di risposta (tra il proxy e il client). L'impostazione di questa variabile induce la creazione di una nuova intestazione Set-Cookie nel flusso di richieste documenti, a prescindere dalla presenza o meno di un'intestazione duplicata.
HTTP_HEADERS
Sola lettura. Utilizzato per estrarre tutte le intestazioni di richiesta client.
HTTP_REASON
L'impostazione di questa variabile influisce sulla stringa reason nella risposta HTTP. L'impostazione di questa variabile influisce sulla stringa reason nella risposta del proxy al client. L'estrazione di questa variabile restituisce la stringa reason nella risposta proveniente dal server dei contenuti al proxy.
HTTP_RESPONSE
L'impostazione di questa variabile influisce sul codice di risposta nella risposta HTTP. La sua impostazione influisce anche sul codice di stato nella risposta del proxy al client. L'estrazione di questa variabile restituisce il codice di stato nella risposta proveniente dal server dei contenuti al proxy.
HTTP_STATUS
Contiene il codice di risposta HTTP e la stringa reason. Ad esempio, 200 OK.
HTTP_USER_AGENT
Contiene il valore dell'intestazione della richiesta User-Agent, vale a dire il nome del browser web del client, ad esempio, Netscape Navigator / V2.02 . L'impostazione di questa variabile influisce sull'intestazione nella risposta del proxy al client. La relativa estrazione viene applicata all'intestazione della richiesta del client.
INIT_STRING
Sola lettura. La direttiva ServerInit definisce questa stringa. Questa variabile può essere letta solo durante l'inizializzazione del server.
LAST_MODIFIED
L'estrazione di questa variabile si applica all'intestazione della richiesta del client. La relativa impostazione influisce sull'intestazione nella richiesta al server dei contenuti. Ad esempio:
Mon, 01 Mar 1998 19:41:17 GMT
LOCAL_VARIABLES
Sola lettura. Tutte le variabili definite dall'utente.
MAXACTIVETHREADS
Sola lettura. Il numero massimo di thread attivi.
NOTMODIFIED_TO_OK
Forza una risposta completa al client. Valido nelle fasi PreExit e ProxyAdvisor.
ORIGINAL_HOST
Sola lettura. Restituisce il nome host o l'indirizzo IP di destinazione di una richiesta.
ORIGINAL_URL
Sola lettura. Restituisce l'URL originale inviato nella richiesta client.
OVERRIDE_HTTP_NOTRANSFORM
Abilita la modifica dei dati alla presenza di un'intestazione Cache-Control: no-transform. L'impostazione di questa variabile influisce sull'intestazione di risposta al client.
OVERRIDE_PROXY_NOTRANSFORM
Abilita la modifica dei dati alla presenza di un'intestazione Cache-Control: no-transform. L'impostazione di questa variabile influisce sulla richiesta al server dei contenuti.
PASSWORD
Per l'autenticazione di base, contiene la password decodificata. Ad esempio, password.
PATH
Contiene il percorso completo convertito.
PATH_INFO
Contiene ulteriori informazioni sul percorso inviate dal browser Web. Ad esempio, /foo.
PATH_TRANSLATED
Contiene la versione decodificata o convertita delle informazioni sul precorso contenute in PATH_INFO. Ad esempio:
d:\wwwhome\foo
/wwwhome/foo
PPATH
Contiene il percorso parzialmente convertito. Utilizzarlo nella fase Conversione nome.
PROXIED_CONTENT_LENGTH
Sola lettura. Restituisce la lunghezza dei dati di risposta attualmente trasferiti tramite il server proxy.
PROXY_ACCESS
Definisce se la richiesta è una richiesta proxy. Ad esempio, NO.
PROXY_CONTENT_TYPE
Contiene l'intestazione Content-Type della richiesta proxy effettuata tramite HTTPD_proxy(). Se le informazioni vengono inviate con il metodo POST, questa variabile contiene il tipo di dati inclusi. È possibile creare il proprio tipo di contenuto nel file di configurazione del server proxy e mapparlo su un visualizzatore. L'estrazione di questa variabile si applica al valore dell'intestazione della risposta del server dei contenuti. La relativa impostazione influisce sull'intestazione per la richiesta al server dei contenuti. Ad esempio:
application/x-www-form-urlencoded
PROXY_CONTENT_LENGTH
L'intestazione Content-Length della richiesta proxy effettuata tramite HTTPD_proxy(). Se le informazioni vengono inviate con il metodo POST, questa variabile contiene il numero di caratteri dei dati. Generalmente, i server non inviano un'indicatore di fine file quando inoltrano le informazioni utilizzando un input standard. Se necessario, per stabilire la fine della stringa di input, è possibile utilizzare il valore CONTENT_LENGTH. L'estrazione di questa variabile si applica al valore dell'intestazione della risposta del server dei contenuti. La relativa impostazione influisce sull'intestazione per la richiesta al server dei contenuti. Ad esempio:
7034
PROXY_COOKIE
Quando viene letta, questa variabile contiene il valore dell'intestazione Set-Cookie impostata dal server di origine. Essa può essere utilizzata anche per impostare un nuovo cookie nel flusso di risposte. L'impostazione di questa variabile induce la creazione di una nuova intestazione Set-Cookie nel flusso di richieste documenti, a prescindere dalla presenza o meno di un'intestazione duplicata.
PROXY_HEADERS
Sola lettura. Utilizzato per estrarre le intestazioni Proxy.
PROXY_METHOD
Metodo per la richiesta effettuata tramite HTTPD_proxy(). L'estrazione di questa variabile si applica al valore dell'intestazione della risposta del server dei contenuti. La relativa impostazione influisce sull'intestazione per la richiesta al server dei contenuti.
QUERY_STRING
Se le informazioni vengono inviate utilizzando un metodo GET, questa variabile contiene le informazioni situate dopo un punto interrogativo (?) in una query. Queste informazioni devono essere decodificate dal programma CGI. Ad esempio:
NAME=Eugene+T%2E+Fox&ADDR=etfox%7Cibm.net&INTEREST=xyz
RCA_OWNER
Sola lettura. Restituisce un valore numerico, che identifica il nodo dell'oggetto richiesto. Questa variabile può essere utilizzata nelle fasi PostExit, ProxyAdvisor o Log ed è significativa solo se il server fa parte di una matrice di cache che utilizza RCA (remote cache access).
RCA_TIMEOUTS
Sola lettura. Restituisce un valore numerico contenente il numero totale (aggregato) di timeout sulle richieste RCA per tutti i peer. È possibile utilizzare questa variabile in qualsiasi fase.
REDIRECT_*
Sola lettura. Contiene informazioni su una stringa di reindirizzamento per il codice di errore che corrisponde al nome della variabile (ad esempio, REDIRECT_URL). Nella documentazione online è possibile trovare un elenco delle variabili REDIRECT_ possibili per il server web Apache, all'indirizzo http://httpd.apache.org/docs-2.0/custom-error.html.
REFERRER_URL
Sola lettura. Contiene l'ubicazione più recente dell'URL del browser. Consente al client di specificare, a vantaggio del server, l'indirizzo (URL) della risorsa da cui si ottiene Request-URL. Ad esempio:
http://www.company.com/homepage
REMOTE_ADDR
Contiene l'indirizzo IP del browser Web, se disponibile. Ad esempio, 45.23.06.8.
REMOTE_HOST
Contiene il nome host del browser Web, se disponibile. Ad esempio, www.raleigh.ibm.com.
REMOTE_USER
Se il server supporta l'autenticazione del client e lo script è protetto, questa variabile contiene il nome utente inoltrato per l'autenticazione. Ad esempio, joeuser.
REQHDR
Sola lettura. Contiene un elenco delle intestazioni inviate dal client.
REQUEST_CONTENT_TYPE
Sola lettura. Restituisce il tipo di contenuto del corpo della richiesta. Ad esempio:
application/x-www-form-urlencoded
REQUEST_CONTENT_LENGTH
Sola lettura. Se le informazioni vengono inviate con il metodo POST, questa variabile contiene il numero di caratteri dei dati. Generalmente, i server non inviano un'indicatore di fine file quando inoltrano le informazioni utilizzando un input standard. Se necessario, per stabilire la fine della stringa di input, è possibile utilizzare il valore CONTENT_LENGTH. Ad esempio, 7034.
REQUEST_METHOD
Sola lettura. Contiene il metodo (come specificato con l'attributo METHOD in un modulo HTML) utilizzato per inviare la richiesta. Ad esempio, GET o POST.
REQUEST_PORT
Sola lettura. Restituisce il numero di porta specificato nell'URL o una porta predefinita basata sul protocollo.
RESPONSE_CONTENT_TYPE
Sola lettura. Se le informazioni vengono inviate con il metodo POST, questa variabile contiene il tipo di dati inclusi. È possibile creare il proprio tipo di contenuto nel file di configurazione del server proxy e mapparlo su un visualizzatore. Ad esempio, text/html.
RESPONSE_CONTENT_LENGTH
Sola lettura. Se le informazioni vengono inviate con il metodo POST, questa variabile contiene il numero di caratteri dei dati. Generalmente, i server non inviano un'indicatore di fine file quando inoltrano le informazioni utilizzando un input standard. Se necessario, per stabilire la fine della stringa di input, è possibile utilizzare il valore CONTENT_LENGTH. Ad esempio, 7034.
RULE_FILE_PATH
Sola lettura. Contiene il percorso completo del file system e il nome del file di configurazione.
SSL_SESSIONID
Sola lettura. Restituisce l'ID di sessione se la richiesta corrente viene ricevuta su una connessione SSL. Restituisce NULL se la richiesta corrente non viene ricevuta su una connessione SSL.
SCRIPT_NAME
Contiene l'URL della richiesta.
SERVER_ADDR
Sola lettura. Contiene l'indirizzo IP locale del server proxy.
SERVER_NAME
Sola lettura. Contiene il nome host del server proxy o l'indirizzo IP del server dei contenuti per questa richiesta. Ad esempio, www.ibm.com.
SERVER_PORT
Sola lettura. Contiene il numero di porta del server proxy a cui è stata inviata la richiesta client. Ad esempio, 80.
SERVER_PROTOCOL
Sola lettura. Contiene il nome e la versione del protocollo utilizzato per effettuare la richiesta. Ad esempio, HTTP/1.1.
SERVER_ROOT
Sola lettura. Contiene la directory in cui viene installato il programma del server proxy.
SERVER_SOFTWARE
Sola lettura. Contiene il nome e la versione del server proxy.
STATUS
Contiene il codice di risposta HTTP e la stringa reason. Ad esempio, 200 OK.
TRACE
Determina la quantità delle informazioni tracciate. I valori di ritorno includono:
URI
Lettura/scrittura. Uguale a DOCUMENT_URL.
URI_PATH
Sola lettura. Restituisce solo parte del percorso di un'URL.
URL
Lettura/scrittura. Uguale a DOCUMENT_URL.
URL_MD4
Sola lettura. Restituisce il nome del file di cache potenziale per la richiesta corrente.
USE_PROXY
Identificare il proxy con cui associare la richiesta corrente. Specificare l'URL. Ad esempio, http://myproxy:8080.
USERID
Uguale a REMOTE_USER.
USERNAME
Uguale a REMOTE_USER.

Autenticazione e autorizzazione

Breve riesame della terminologia:

Autenticazione
La verifica dei token di sicurezza associati a questa richiesta per accertare l'identità del richiedente.
Autorizzazione
Un processo che utilizza i token di sicurezza per determinare se il richiedente ha accesso alla risorsa.

Figura 3 illustra il processo di autorizzazione e autenticazione del server proxy.

Figura 3. Processo di autorizzazione e autenticazione del server proxy
Diagramma del processo di autorizzazione e autenticazione

Come dimostrato in Figura 3, l'avvio del processo di autorizzazione è il primo passo del processo di autorizzazione e autenticazione del server.

Nel Caching Proxy, l'autenticazione fa parte del processo di autorizzazione; si verifica solo quando viene richiesta l'autorizzazione.

Processo di autenticazione e autorizzazione

Il server proxy segue queste fasi durante l'elaborazione di una richiesta che richiede l'autorizzazione.

  1. Innanzitutto, il server proxy esamina il file di configurazione per determinare se esiste o meno una direttiva di autorizzazione.
  2. Il server proxy avvia il processo di autenticazione verificando l'esistenza o meno dell'intestazione HTTP_authenticate nella richiesta client.
  3. Il server proxy effettua il controllo per vedere se nel file di configurazione del proxy esiste una direttiva di autenticazione.

Se il plugin del Caching Proxy fornisce il proprio processo di autorizzazione, questo sostituisce l'autorizzazione e l'autenticazione predefinita del server. Tuttavia, se nel file di configurazione sono presenti direttive di autorizzazione, è necessario che anche le funzioni del plug-in ad esse associate gestiscano qualsiasi autorizzazione necessaria. A questo scopo viene fornita la funzione HTTPD_authenticate() predefinita.

Esistono tre metodi per fornire l'autenticazione nei plugin di autorizzazione:

Se il plugin del Caching Proxy non fornisce il processo di autorizzazione, è ancora possibile fornire un'autenticazione personalizzata utilizzando il seguente metodo:

Una volta effettuata l'operazione di Autorizzazione, viene eseguita l'autorizzazione predefinita del server che, a sua volta, chiama la funzione del plugin di autenticazione.

Tenere presenti i seguenti punti:

Memorizzazione della variante nella cache

Utilizzare la funzione di memorizzazione nella cache della variante per memorizzare i dati, vale a dire un modulo modificato del documento originale (l'URI). Il Caching Proxy gestisce le varianti generate dall'API. Le varianti rappresentano versioni differenti di un documento di base.

In genere, quando i server di origine inviano delle varianti, la loro identificazione in quanto tali ha esito negativo. Il Caching Proxy supporta solo le varianti create dai plugin (ad esempio, la conversione della code page). Se un plugin crea una variante in base a criteri non presenti nell'intestazione HTTP, è necessario includere un funzione della fase PreExit o PostAuthorization per creare una pseudo intestazione in modo che il Caching Proxy possa identificare correttamente la variante esistente.

Ad esempio, utilizzare un programma API Transmogrifier per modificare i dati richiesti dagli utenti in base al valore dell'intestazione User-Agent inviato dal browser. Nella funzione close, salvare il contenuto modificato in un file o specificare una lunghezza del buffer e inoltrare il buffer come argomento dati. Quindi, utilizzare le funzioni di memorizzazione nella cache della variante, httpd_variant_insert() e httpd_variant_lookup(), per inserire il contenuto nella cache.

Esempi di API

Per un'introduzione alle funzioni delle API del Caching Proxy, prendere in esame i programmi di esempio forniti nella directory esempi del CD-ROM di installazione di componenti Edge. Altre informazioni sono disponibili sul sito web di WebSphere Application Server, www.ibm.com/software/webservers/appserv/.