獲取POST數據我想從TIdHTTPProxyServer後的數據,使用OnHTTPBeforeCommand或OnHTTPDocument事件,但都毫無用處。 我該怎麼做?從TIdHTTPProxyServer
順便說一句,我使用的是印10,但其他解決方案(與突觸,例如)將是涼爽。
在此先感謝。
獲取POST數據我想從TIdHTTPProxyServer後的數據,使用OnHTTPBeforeCommand或OnHTTPDocument事件,但都毫無用處。 我該怎麼做?從TIdHTTPProxyServer
順便說一句,我使用的是印10,但其他解決方案(與突觸,例如)將是涼爽。
在此先感謝。
POST
數據在OnHTTPBeforeCommand
事件中不可用,因爲它尚未從套接字中讀取。該事件中只有HTTP標頭可用。在OnHTTPDocument
事件,但只有在下列條件下
POST
數據是可用的:
的POST
請求使用非零Content-Length
報頭(如TIdHTTPProxyServer
尚不支持Transfer-Encoding
頭處理壓縮/分塊的HTTP消息)。
TIdHTTPProxyServerContext.TransferMode
屬性爲tmFullDocument
當OnHTTPBeforeCommand
事件退出時。默認情況下,TransferMode
設置爲與TIdHTTPProxyServer.DefaultTransferMode
屬性相同的值,默認爲tmFullDocument
。
客戶端將POST
請求直接發送到TIdHTTPProxyServer
,指定一個完整的URL作爲目標。如果客戶端,而不是直接發送CONNECT
請求TIdHTTPProxyServer
建立隧道到目標服務器,然後通過隧道向目標服務器發送POST
請求(例如,建立HTTPS請求SSL會話時),TIdHTTPProxyServer
不公開訪問到那個數據。這是從一個套接字到另一個套接字的直通過程。
我覺得我得到的最後一個情況..很傷心,但感謝! – Keeper 2013-02-20 22:29:57
在#3中攔截數據的唯一方法是將一個攔截組件附加到'AContext.Connection.IOHandler.Intercept'屬性,但是隨後您必須手動解析原始HTTP(可能是SSL)數據攔截。 – 2013-02-20 22:45:44
您的意思是在OnHTTPBeforeCommand中設置TIdServerCompressionIntercept? – Keeper 2013-02-21 00:08:59