2013-12-12 102 views
0

我在Railo-Express-4.1.1.009下使用cfhttp(我認爲是)Cookie問題。CFHTTP Cookie問題

我的代碼執行兩步http調用。第一步執行遠程應用程序的授權。如果成功,則遠程服務器返回的授權cookie,它被提取出來並傳遞給第二個呼叫,像這樣:

<cfhttp url="http://remoteserver/targetPath" port="xxxx" method="get" result="Local.response" throwonerror="true" redirect="false"> 
     <cfhttpparam name="Action" value="Ping" type="URL" /> 
     <cfhttpparam name="mansession_id" value="#Local.result.authCookie#" type="cookie" /> 
</cfhttp> 

HTTP調用是成功的,但本質上回應說:我沒有被授權。 (這就是在這種情況下「拒絕許可」的意思)。

<response='Error' message='Permission denied'... /> 

然而,完全相同的代碼(在同一個方塊運行)成功與CF9:

<response='Success' ping='Pong' ... /> 

我雙重檢查從第一CFHTTP調用的響應報頭,並驗證了我傳遞正確#Local.result.authCookie#值到所述第二呼叫:

  • CFHTTP結果 = set-cookie : mansession_id="932a4086";
  • Local.result.authCookie = AUTHCOOKIE string 932a4086

既然一切是一樣的,除了運行CFML引擎,我已經得出結論cfhttp可能不正確,將Cookie。我已經嘗試了很多東西,但是在這一點上我沒有任何想法。任何想法如何解決問題或進一步排除故障將不勝感激。

更新:

我決定嘗試不同的版本Railo的(因爲Express版本做起來很簡單),發現代碼3.3.3.001(但不是4.0.4.001)下工作。所以在4.x中必須破解一些東西。

回答

1

我將安裝Fiddler,然後將proxyServer = localhost和proxyPort = 8888屬性添加到CFHTTP調用。然後您可以通過提琴手觀看HTTP請求。如果您的CF服務器位於另一個盒子上,您仍然可以在桌面上運行Fiddler,只需在Fiddler的設置中啓用'允許其他機器連接',並在proxyServer屬性中提供您的計算機名稱而不是localhost。

你處於一種很好的狀態,你可以在某些環境中工作,而不是其他人,所以你應該能夠看到發生了什麼不同的事情。

您可以手動比較http請求,也可以將Fiddler配置爲使用差異化工具。選擇兩個請求,然後右鍵單擊 - >比較。我強烈推薦Scooter Software的Beyond Compare 3作爲差異化工具。

更新您的問題與你發現,因爲我想知道結果。

+0

好主意。今天我必須得到一些東西,但明天我會試試。 – ihmg

+0

提琴手做的伎倆。 Cookie標籤顯示我設置的cookie沒有以相同的方式傳輸。 3.x版本設置了一個cookie,但4.x創建了多個cookie。仍在研究它是代碼還是Railo問題(可能是代碼),但是Fiddler的幫助非常大。再次感謝!(我也很想投票,但是我沒有足夠的代表......) – ihmg

+0

非常高興爲你效勞!雖然這並不理想,但如果您需要對發送的內容進行更好的控制,Railo會在後臺使用HTTPClient,所以您幾乎可以肯定會使用它來代替CFHTTP來發出請求:http://hc.apache.org/httpcomponents-客戶-GA/quickstart.html – barnyr