撰寫 Caching Proxy 外掛程式之前,您需要瞭解 Proxy 伺服器如何運作。Proxy 伺服器的行為可以分割成數個不同的處理程序步驟。 對於每一個步驟,您可以提供使用 API 的自訂函數。 例如,在讀取用戶端要求之後、執行任何其他處理程序之前,您想要執行任何動作嗎? 或者,您可能想在鑑別期間,以及在所要求的檔案傳送之後,執行特殊常式。
預先定義的函數庫會隨 API 提供。外掛程式可以呼叫預先定義的 API 函數,以便與 Proxy 伺服器處理程序互動(例如,操作要求、讀取或寫入要求標頭,或寫入 Proxy 伺服器的日誌)。這些函數不應該與您撰寫的外掛程式函數混淆,後者是由 Proxy 伺服器呼叫。預先定義的函數和巨集說明預先定義的函數。
您要使用伺服器配置檔中對應的 Caching Proxy API 指引,來指示 Proxy 伺服器在適當的步驟呼叫外掛程式函數。 API 步驟的 Caching Proxy 配置指引說明這些指引。
本文件包括下列各項:
您可以使用這些元件和程序來撰寫自己的 Caching Proxy 外掛程式。
Proxy 伺服器的基本作業可根據伺服器在該階段期間執行的處理類型,而分成幾個步驟。 每一個步驟包括程式的指定部分可以執行的接合。 藉由將 API 指引新增至 Caching Proxy 配置檔 (ibmproxy.conf),您可以指出在特定步驟期間要呼叫哪個外掛程式函數。 您可以在特定處理程序步驟期間併入該步驟的多個指引,來呼叫數個外掛程式函數。
有些步驟是伺服器要求處理程序的一部分。換句話說,每次 Proxy 伺服器處理要求時都會執行這些步驟。 其他步驟的執行與要求處理程序無關;也就是說,不論是否正在處理要求,伺服器都會執行這些步驟。
已編譯的程式位於共用物件(例如,DLL 或 .so 檔案)中,依作業系統而定。當伺服器繼續進行其要求處理程序步驟時,它會呼叫與每一個步驟相關聯的外掛程式函數,直到其中一個函數指出它已處理該要求為止。 如果您對某特定步驟指定多個外掛程式函數,則會依函數出現在配置檔中的指引順序來呼叫它們。
如果外掛程式函數未處理該要求(可能是您未併入該步驟的 Caching Proxy API 指引,或該步驟的外掛程式函數傳回 HTTP_NOACTION),伺服器會對該步驟執行其預設動作。
附註:除了 Service 步驟之外,所有步驟都是如此;Service 步驟沒有預設動作。
圖 1描述 Proxy 伺服器處理程序的步驟,並定義與要求處理程序相關之步驟的處理順序。
圖表上四個步驟的執行,與任何用戶端要求的處理無關。 這些步驟與 Proxy 伺服器的執行和維護相關。它們包括下列各項:
下列清單說明圖 1圖片中每一個步驟的目的。請注意,不保證會針對特定要求呼叫所有步驟。
會在讀取要求之後、執行任何其他動作之前執行處理。
如果此步驟傳回已處理要求的指示 (HTTP_OK),則伺服器會略過要求處理程序中的其他步驟,只執行 Transmogrifier、Log 和 PostExit 步驟。
會使用儲存的安全記號來檢查保護的實體路徑、ACL 和其他存取控制,並產生基本鑑別 (BA) 所需要的 WWW 鑑別標頭。如果您撰寫自己的外掛程式函數來取代此步驟,則必須自行產生這些標頭。
如需相關資訊,請參閱鑑別和授權。
解碼、驗證及儲存安全記號。
如需相關資訊,請參閱鑑別和授權。
會在授權及尋找物件之後、滿足要求之前執行處理。
如果此步驟傳回已處理要求的指示 (HTTP_OK),則伺服器會略過要求處理程序中的其他步驟,只執行 Transmogrifier、Log 和 PostExit 步驟。
在 AIX® 系統上,您需要列出外掛程式函數的匯出檔(例如,libmyapp.exp),且您必須鏈結 Caching Proxy API 匯入檔 libhttpdapi.exp。
在 Linux、HP-UX 和 Solaris 系統上,您必須鏈結 libhttpdapi 和 libc 程式庫。
在 Windows 系統上,您需要列出外掛程式函數的模組定義檔 (.def),且您必須鏈結 HTTPDAPI.LIB。
請務必在函數定義中併入 HTAPI.h 及使用 HTTPD_LINKAGE 巨集。 此巨集確保所有函數都使用相同的呼叫慣例。
使用下列編譯及鏈結指令作為準則。
cc_r -c -qdbxextra -qcpluscmt foo.c
cc_r -bM:SRE -bnoentry -o libfoo.so foo.o -bI:libhttpdapi.exp
-bE:foo.exp
(此指令顯示成兩行,只是為了可讀性。)
cc -Ae -c +Z +DAportable
aCC +Z -mt -c +DAportable
gcc -c foo.c
ld -G -Bsymbolic -o libfoo.so foo.o -lhttpdapi -lc
cc -mt -Bsymbolic -c foo.c
cc -mt -Bsymbolic -G -o libfoo.so foo.o -lhttpdapi -lc
cl /c /MD /DWIN32 foo.c
link httpdapi.lib foo.obj /def:foo.def /out:foo.dll /dll
如果要指定匯出,請使用下列其中一種方法:
遵循外掛程式函數原型中呈現的語法,對已定義的要求處理程序步驟撰寫您自己的程式函數。
每一個函數必須以指出所採取動作的值,來填寫回覆碼參數:
每一個 Caching Proxy 步驟的函數原型顯示要使用的格式,並說明它們可執行的處理類型。 請注意,函數名稱未預先定義。 您必須提供唯一名稱給函數,且可以選擇自己的命名慣例。 為了簡化關聯,本文件使用與伺服器處理程序步驟相關的名稱。
在每一個外掛程式函數中,某些預先定義的 API 函數是有效的。 有些預先定義的函數並非對所有步驟都有效。當從所有這些外掛程式函數呼叫時,下列預先定義的 API 函數是有效的:
其他有效或無效 API 函數則記錄在函數原型說明中。
傳送至函數的 handle 參數值,可當成第一個引數傳遞至預先定義的函數。 預先定義的函數和巨集說明預先定義的 API 函數。
void HTTPD_LINKAGE ServerInitFunction (
unsigned char *handle,
unsigned long *major_version,
unsigned long *minor_version,
long *return_code
)
在伺服器起始設定期間載入模組之後,會呼叫對此步驟定義的函數。 您可在接受任何要求之前,執行起始設定。
雖然會呼叫所有伺服器的起始設定函數,但此步驟中某函數的錯誤回覆碼,卻導致伺服器忽略與傳回錯誤碼的函數配置在相同模組中的所有其他函數。 (也就是說,不會呼叫包含在與傳回錯誤的那個函數相同的共用物件中的任何其他函數。)
version 參數包含 Proxy 伺服器的版本號碼;這些是由 Caching Proxy 提供。
void HTTPD_LINKAGE PreExitFunction (
unsigned char *handle,
long *return_code
)
在讀取要求之後、發生任何處理之前,會對每一個要求呼叫對此步驟定義的函數。 在 Caching Proxy 處理用戶端的要求之前,可利用此步驟的外掛程式來存取該用戶端的要求。
preExit 函數的有效回覆碼如下所示:
不得使用其他回覆碼。
如果此函數傳回 HTTP_OK,Proxy 伺服器會假設已處理該要求。會略過所有後續的要求處理程序步驟,只執行回應步驟(Transmogrifier、Log 和 PostExit)。
在此步驟期間,所有預先定義的 API 函數都有效。
void HTTPD_LINKAGE MidnightFunction (
unsigned char *handle,
long *return_code
)
會在每天午夜執行對此步驟定義的函數,且不包含要求環境定義。 例如,它可用來呼叫子處理程序來分析日誌。 (請注意,在此步驟期間,延伸處理可能會干擾記載。)
void HTTPD_LINKAGE AuthenticationFunction (
unsigned char *handle,
long *return_code
)
根據要求的鑑別方法,會對每一個要求呼叫對此步驟定義的函數。 此函數可用來自訂隨要求傳送的安全記號驗證。
void HTTPD_LINKAGE NameTransFunction (
unsigned char *handle,
long *return_code
)
會對每一個要求呼叫對此步驟定義的函數。 如果您只想對符合某 URL 範本的要求呼叫外掛程式函數,可在配置檔指引中指定該範本。 Name Translation 步驟會發生在處理要求之前,並提供將 URL 對映到物件(例如:檔名)的機制。
void HTTPD_LINKAGE AuthorizationFunction (
unsigned char *handle,
long *return_code
)
會對每一個要求呼叫對此步驟定義的函數。 如果您只想對符合某 URL 範本的要求呼叫外掛程式函數,可在配置檔指引中指定該範本。 Authorization 步驟會發生在處理要求之前,並可用來驗證所識別的物件是否能傳回至用戶端。 如果您要執行基本鑑別 (BA),則必須產生所需要的 WWW 鑑別標頭。
void HTTPD_LINKAGE ObjTypeFunction (
unsigned char *handle,
long *return_code
)
會對每一個要求呼叫對此步驟定義的函數。 如果您只想對符合某 URL 範本的要求呼叫外掛程式函數,可在配置檔指引中指定該範本。 Object Type 步驟會發生在處理要求之前,並可用來檢查物件是否存在,以及執行物件分類。
void HTTPD_LINKAGE PostAuthFunction (
unsigned char *handle,
long *return_code
)
在授權要求之後、發生任何處理之前,會呼叫對此步驟定義的函數。 如果此函數傳回 HTTP_OK,Proxy 伺服器會假設已處理該要求。會略過所有後續的要求步驟,只執行回應步驟(Transmogrifier、Log 和 PostExit)。
在此步驟期間,所有伺服器預先定義的函數都有效。
void HTTPD_LINKAGE ServiceFunction (
unsigned char *handle,
long *return_code
)
會對每一個要求呼叫對此步驟定義的函數。 如果您只想對符合某 URL 範本的要求呼叫外掛程式函數,可在配置檔指引中指定該範本。 若在 PreExit 或 PostAuthorization 步驟中未能滿足該要求,則 Service 步驟可以滿足。
在此步驟期間,所有伺服器預先定義的函數都有效。
如需根據 HTTP 方法而非根據 URL 來配置要執行的「服務」函數相關資訊,請參閱 WebSphere Application Server Caching Proxy 管理手冊 中的「啟用」指引。
對於此步驟,您必須實作下列四個函數。 (函數名稱不需要符合這些名稱。)
void * HTTPD_LINKAGE openFunction (
unsigned char *handle,
long *return_code
)
open 函數會執行任何所需的起始設定(例如:緩衝區配置),來處理此串流的資料。 HTTP_OK 以外的任何回覆碼會使此過濾器中斷(不呼叫 write 和 close 函數)。 您的函數可傳回空指標,以便您配置結構的空間,並以後續函數的 correlator 參數形式,將指標傳回給您。
void HTTPD_LINKAGE writeFunction (
unsigned char *handle,
unsigned char *data, /* 回應資料,由
原始伺服器傳送 */
unsigned long *length, /* 回應資料的長度 */
void *correlator, /* 由
'open' 函數傳回的指標 */
long *return_code
)
write 函數處理資料,並可使用新的或變更的資料呼叫伺服器預先定義的 HTTPD_write() 函數。外掛程式不得嘗試釋放傳遞給它的緩衝區,或預期伺服器會釋放它接收的緩衝區。
如果您決定不要在 write 函數的範圍內變更資料,您仍然必須在 open、write 或 close 函數的範圍內呼叫 HTTPD_write() 函數,才能將回應的資料傳遞給用戶端。 correlator 引數是 open 常式中傳回之資料緩衝區的指標。
void HTTPD_LINKAGE closeFunction (
unsigned char *handle,
void *correlator,
long *return_code
)
close 函數會執行任何所需的清除動作(例如:清除及釋放相關性因子緩衝區),來完成處理此串流的資料。correlator 引數是 open 常式中傳回之資料緩衝區的指標。
void HTTPD_LINKAGE errorFunction (
unsigned char *handle,
void *correlator,
long *return_code
)
error 函數會在傳送錯誤頁面之前執行清除動作,例如:清除或釋放緩衝資料(或兩者)。此時,會呼叫 open、write 及 close 函數來處理錯誤頁面。 correlator 引數是 open 常式中傳回之資料緩衝區的指標。
附註:
void HTTPD_LINKAGE GCAdvisorFunction (
unsigned char *handle,
long *return_code
)
在記憶體回收期間,會對快取中的每一個檔案呼叫對此步驟定義的函數。 此函數可讓您決定要保留和要捨棄的檔案。 如需相關資訊,請參閱 GC_* 變數。
void HTTPD_LINKAGE ProxyAdvisorFunction (
unsigned char *handle,
long *return_code
)
在每一個 Proxy 要求的服務期間,會呼叫對此步驟定義的函數。 例如,它可用來設定 USE_PROXY 變數。
void HTTPD_LINKAGE LogFunction (
unsigned char *handle,
long *return_code
)
在處理要求及關閉用戶端的通訊之後,會對每一個要求呼叫對此步驟定義的函數。如果您只想對符合某 URL 範本的要求呼叫外掛程式函數,可在配置檔指引中指定該範本。 不論要求處理程序成功或失敗,都會呼叫此函數。 如果您不想要日誌外掛程式置換預設日誌機制,請將回覆碼設定為 HTTP_NOACTION 而非 HTTP_OK。
void HTTPD_LINKAGE ErrorFunction (
unsigned char *handle,
long *return_code
)
會對每一個失敗的要求呼叫對此步驟定義的函數。 如果您只想對符合某 URL 範本的失敗要求呼叫外掛程式函數,可在配置檔指引中指定該範本。 您可在 Error 步驟中自訂錯誤回應。
void HTTPD_LINKAGE PostExitFunction (
unsigned char *handle,
long *return_code
)
不論要求成功或失敗,都會對每一個要求呼叫對此步驟定義的函數。 此步驟可讓您對外掛程式配置來處理該要求的任何資源,執行清除作業。
void HTTPD_LINKAGE ServerTermFunction (
unsigned char *handle,
long *return_code
)
在發生伺服器正常關機時,會呼叫對此步驟定義的函數。 它可讓您清除在「伺服器起始設定」步驟期間配置的資源。 請勿在此步驟呼叫任何 HTTP_* 函數(其結果無法預期)。 如果配置檔中有「伺服器終止」的多個 Caching Proxy API 指引,則全部都會呼叫。
這些回覆碼遵循全球資訊網協會 (www.w3.org/pub/WWW/Protocols/) 已發佈的 HTTP 1.1 規格 RFC 2616。外掛程式函數必須傳回其中一值。
值 | 回覆碼 |
0 | HTTP_NOACTION |
100 | HTTP_CONTINUE |
101 | HTTP_SWITCHING_PROTOCOLS |
200 | HTTP_OK |
201 | HTTP_CREATED |
202 | HTTP_ACCEPTED |
203 | HTTP_NON_AUTHORITATIVE |
204 | HTTP_NO_CONTENT |
205 | HTTP_RESET_CONTENT |
206 | HTTP_PARTIAL_CONTENT |
300 | HTTP_MULTIPLE_CHOICES |
301 | HTTP_MOVED_PERMANENTLY |
302 | HTTP_MOVED_TEMPORARILY |
302 | HTTP_FOUND |
303 | HTTP_SEE_OTHER |
304 | HTTP_NOT_MODIFIED |
305 | HTTP_USE_PROXY |
307 | HTTP_TEMPORARY_REDIRECT |
400 | HTTP_BAD_REQUEST |
401 | HTTP_UNAUTHORIZED |
403 | HTTP_FORBIDDEN |
404 | HTTP_NOT_FOUND |
405 | HTTP_METHOD_NOT_ALLOWED |
406 | HTTP_NOT_ACCEPTABLE |
407 | HTTP_PROXY_UNAUTHORIZED |
408 | HTTP_REQUEST_TIMEOUT |
409 | HTTP_CONFLICT |
410 | HTTP_GONE |
411 | HTTP_LENGTH_REQUIRED |
412 | HTTP_PRECONDITION_FAILED |
413 | HTTP_ENTITY_TOO_LARGE |
414 | HTTP_URI_TOO_LONG |
415 | HTTP_BAD_MEDIA_TYPE |
416 | HTTP_BAD_RANGE |
417 | HTTP_EXPECTATION_FAILED |
500 | HTTP_SERVER_ERROR |
501 | HTTP_NOT_IMPLEMENTED |
502 | HTTP_BAD_GATEWAY |
503 | HTTP_SERVICE_UNAVAILABLE |
504 | HTTP_GATEWAY_TIMEOUT |
505 | HTTP_BAD_VERSION |
您可以從自己的外掛程式函數中,呼叫伺服器預先定義的函數和巨集。您必須使用其預先定義的名稱並遵循下述格式。 在參數說明中,字母 i 指輸入參數,字母 o 指輸出參數,i/o 指一個參數同時用於輸入及輸出。
每一個函數會視要求成功與否,傳回其中一個 HTTPD 回覆碼。 來自預先定義的函數和巨集的回覆碼說明這些程式碼。
在呼叫這些函數時,請使用提供給外掛程式的 handle 作為第一個參數。 否則,函數會傳回 HTTPD_PARAMETER_ERROR 錯誤碼。 不接受 NULL 為有效 handle。
void HTTPD_LINKAGE HTTPD_authenticate (
unsigned char *handle, /* i; handle */
long *return_code /* o; 回覆碼 */
)
void HTTPD_LINKAGE HTTPD_cacheable_url (
unsigned char *handle, /* i; handle */
unsigned char *url, /* i; 要檢查的 URL */
unsigned char *req_method, /* i; URL 的要求方法 */
long *retval /* o; 回覆碼 */
)
回覆值 HTTPD_SUCCESS 指 URL 內容可以快取;HTTPD_FAILURE 指內容不可以快取。 HTTPD_INTERNAL_ERROR 也是此函數的可能回覆碼。
void HTTPD_LINKAGE HTTPD_close (
unsigned char *handle, /* i; handle */
long *return_code /* o; 回覆碼 */
)
void HTTPD_LINKAGE HTTPD_exec (
unsigned char *handle, /* i; handle */
unsigned char *name, /* i; 要執行的 Script 名稱 */
unsigned long *name_length, /* i; 名稱的長度 */
long *return_code /* o; 回覆碼 */
)
void HTTPD_LINKAGE HTTPD_extract (
unsigned char *handle, /* i; handle */
unsigned char *name, /* i; 要擷取的變數名稱 */
unsigned long *name_length, /* i; 名稱的長度 */
unsigned char *value, /* o; 在其中放置
值的緩衝區 */
unsigned long *value_length, /* i/o; 緩衝區大小 */
long *return_code /* o; 回覆碼 */
)
若此函數傳回 HTTPD_BUFFER_TOO_SMALL 回覆碼,則表示您所要求的緩衝區對擷取的值而言不夠大。 在此情況下,函數就不會使用緩衝區,但會以您需要的緩衝區大小更新 value_length 參數,以順利擷取此值。 使用至少與傳回的 value_length 一樣大的緩衝區來重試擷取。
void HTTPD_LINKAGE HTTPD_file (
unsigned char *handle, /* i; handle */
unsigned char *name, /* i; 要傳送的檔案名稱 */
unsigned long *name_length, /* i; 名稱的長度 */
long *return_code /* o; 回覆碼 */
)
const unsigned char * /* o; 變數的值 */
HTTPD_LINKAGE
httpd_getvar(
unsigned char *handle, /* i; handle */
unsigned char *name, /* i; 變數名稱 */
unsigned long *n /* i; 陣列的索引號碼
此陣列包含標頭 */
)
包含標頭的陣列索引是以 0 為開頭。如果要取得陣列中的第一個項目,請對 n 使用 0 值;如果要取得第五個項目,請對 n 使用 4 值。
void HTTPD_LINKAGE HTTPD_log_access (
unsigned char *handle, /* i; handle */
unsigned char *value, /* i; 寫入的資料 */
unsigned long *value_length, /* i; 資料的長度 */
long *return_code /* o; 回覆碼 */
)
請注意,在伺服器存取日誌中寫入百分比符號 (%) 時,不需要跳出符號。
void HTTPD_LINKAGE HTTPD_log_error (
unsigned char *handle, /* i; handle */
unsigned char *value, /* i; 寫入的資料 */
unsigned long *value_length, /* i; 資料的長度 */
long *return_code /* o; 回覆碼 */
)
請注意,在伺服器錯誤日誌中寫入百分比符號 (%) 時,不需要跳出符號。
void HTTPD_LINKAGE HTTPD_log_event (
unsigned char *handle, /* i; handle */
unsigned char *value, /* i; 寫入的資料 */
unsigned long *value_length, /* i; 資料的長度 */
long *return_code /* o; 回覆碼 */
)
請注意,在伺服器事件日誌中寫入百分比符號 (%) 時,不需要跳出符號。
void HTTPD_LINKAGE HTTPD_log_trace (
unsigned char *handle, /* i; handle */
unsigned char *value, /* i; 寫入的資料 */
unsigned long *value_length, /* i; 資料的長度 */
long *return_code /* o; 回覆碼 */
)
請注意,在伺服器追蹤日誌中寫入百分比符號 (%) 時,不需要跳出符號。
void HTTPD_LINKAGE HTTPD_open (
unsigned char *handle, /* i; handle */
long *return_code /* o; 回覆碼 */
)
void HTTPD_LINKAGE HTTPD_proxy (
unsigned char *handle, /* i; handle */
unsigned char *url_name, /* i;
Proxy 要求的 URL */
unsigned long *name_length, /* i; URL 的長度 */
void *request_body, /* i; 要求的主體 */
unsigned long *body_length, /* i; 主體的長度 */
long *return_code /* o; 回覆碼 */
)
void HTTPD_LINKAGE HTTPD_read (
unsigned char *handle, /* i; handle */
unsigned char *value, /* i; 資料的緩衝區 */
unsigned long *value_length, /* i/o; 緩衝區大小
(資料長度) */
long *return_code /* o; 回覆碼 */
)
void HTTPD_LINKAGE HTTPD_restart (
long *return_code /* o; 回覆碼 */
)
請注意,您也可以使用此函數建立變數。 您建立的變數需要遵循 HTTP_ 和 PROXY_ 字首的使用慣例,如變數中的說明。如果您是以 HTTP_ 為開頭來建立變數,其在用戶端回應中就會以標頭的形式傳送,而不含 HTTP_ 字首。例如,要設定位置標頭,請使用含有變數名稱 HTTP_LOCATION 的 HTTPD_set()。如果您是以 PROXY_ 字首來建立變數,其在內容伺服器要求中就會以標頭的形式傳送。 如果您是以 CGI_ 字首來建立變數,其會傳遞至 CGI 程式。
此函數在所有步驟中都有效;不過,並非所有變數在所有步驟中都有效。
void HTTPD_LINKAGE HTTPD_set (
unsigned char *handle, /* i; handle */
unsigned char *name, /* i; 要設定的值名稱 */
unsigned long *name_length, /* i; 名稱的長度 */
unsigned char *value, /* i; 含有值的緩衝區 */
unsigned long *value_length, /* i; 值的長度 */
long *return_code /* o; 回覆碼 */
)
long /* o; 回覆碼 */
HTTPD_LINKAGE httpd_setvar (
unsigned char *handle, /* i; handle */
unsigned char *name, /* i; 變數名稱 */
unsigned char *value, /* i; 新值 */
unsigned long *addHdr /* i; 新增標頭或取代它 */
)
addHdr參數有四個可能值:
這些值定義在 HTAPI.h 中。
void HTTPD_LINKAGE httpd_variant_insert (
unsigned char *handle, /* i; handle */
unsigned char *URI, /* i; 此物件的 URI */
unsigned char *dimension, /* i; 變式的維度 */
unsigned char *variant, /* i; 變式的值 */
unsigned char *filename, /* i; 包含物件的檔案 */
long *return_code /* o; 回覆碼 */
)
附註:
Mozilla 4.0(相容的;BatBrowser 94.1.2;Bat OS)
void HTTPD_LINKAGE httpd_variant_lookup (
unsigned char *handle, /* i; handle */
unsigned char *URI, /* 此物件的 URI */
unsigned char *dimension, /* i; 變式的維度 */
unsigned char *variant, /* i; 變式的值 */
long *return_code); /* o; 回覆碼 */
第一次呼叫此函數之前,如果您尚未設定內容類型,伺服器會假設您傳送的是 CGI 資料串流。
void HTTPD_LINKAGE HTTPD_write (
unsigned char *handle, /* i; handle */
unsigned char *value, /* i; 傳送的資料 */
unsigned char *value_length, /* i; 資料的長度 */
long *return_code); /* o; 回覆碼 */
值 | 狀態碼 | 說明 |
---|---|---|
-1 | HTTPD_UNSUPPORTED | 不支援此函數。 |
0 | HTTPD_SUCCESS | 此函數成功,且輸出欄位有效。 |
1 | HTTPD_FAILURE | 此函數失敗。 |
2 | HTTPD_INTERNAL_ERROR | 發現內部錯誤,此要求的處理無法繼續。 |
3 | HTTPD_PARAMETER_ERROR | 已傳遞一個或多個無效參數。 |
4 | HTTPD_STATE_CHECK | 此函數在此處理程序步驟中無效。 |
5 | HTTPD_READ_ONLY | (只由 HTTPD_set 和 httpd_setvar 傳回。)此變數為唯讀,且無法由外掛程式設定。 |
6 | HTTPD_BUFFER_TOO_SMALL | (由 HTTPD_set、httpd_setvar 和 HTTPD_read 傳回。) 提供的緩衝區太小。 |
7 | HTTPD_AUTHENTICATE_FAILED | (只由 HTTPD_authenticate 傳回。)鑑別失敗。如需相關資訊,請檢查 HTTP_RESPONSE 和 HTTP_REASON 變數。 |
8 | HTTPD_EOF | (只由 HTTPD_read 傳回。)指出要求內文結束。 |
9 | HTTPD_ABORT_REQUEST | 此要求中斷,因為用戶端提供的實體標籤不符合該要求指定的條件。 |
10 | HTTPD_REQUEST_SERVICED | (由 HTTPD_proxy 傳回。)呼叫的函數已完成此要求的回應。 |
11 | HTTPD_RESPONSE_ALREADY_COMPLETED | 此函數失敗,因為該要求的回應已完成。 |
12 | HTTPD_WRITE_ONLY | 此變數為唯寫,且無法由外掛程式讀取。 |
在要求處理程序中,每一個步驟都有一個配置指引,您可以利用它來指示在該步驟期間要呼叫及執行的外掛程式函數。 您可以手動編輯和更新,或利用 Caching Proxy「配置」和「管理」表單中的「API 要求處理程序」表單,將這些指引新增至伺服器的配置檔 (ibmproxy.conf)。
這表示伺服器會依 Service、NameTrans、Exec、Fail、Map、Pass、Proxy、ProxyWAS 和 Redirect 指引在配置檔內的順序來處理它們。 當伺服器成功將 URL 對映到檔案時,它不會讀取或處理任何其他這些指引。 (Map 指引例外。如需 Proxy 伺服器對映規則的完整相關資訊,請參閱 WebSphere Application Server Caching Proxy 管理手冊。)
這些配置檔指引必須以同一行出現在 ibmproxy.conf 檔中,且除了此處明確指定的部分以外,不可含有空格。雖然在某些語法範例中,出現換行是基於可讀性,但是在實際指引中的那些換行點上,不得含有空格。
這些指引中的變數有下列意義:
如果您想要具備路徑資訊的存取權,則 Service 指引需要在函數名稱之後加一個星號 (*)。
如需這些指引相關資訊(包括語法),請參閱 WebSphere Application Server Caching Proxy 管理手冊。