CFHTTP Cookie问题

时间:2013-12-12 17:25:07

标签: http cookies coldfusion railo

我在Railo-Express-4.1.1.009下遇到了cfhttp的cookie问题。

我的代码执行两步http调用。第一步是使用远程应用程序执行授权。如果成功,远程服务器将返回一个授权cookie,该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 个答案:

答案 0 :(得分:2)

我会安装Fiddler,然后将proxyServer = localhost和proxyPort = 8888属性添加到CFHTTP调用。然后,您可以通过fiddler观看HTTP请求。如果您的CF服务器在另一个盒子上,您仍然可以在桌面上运行Fiddler,只需在Fiddler的设置中打开“允许其他机器连接”,并在proxyServer属性中提供您的机器名称而不是localhost。

你处在一个很好的境地,你可以在某些环境中而不是其他环境中工作,所以你应该能够以不同的方式看到发生的事情。

您可以手动比较http请求,也可以将Fiddler配置为使用差异工具。选择两个请求,然后右键单击 - >比较。我强烈推荐Scooter Software的Beyond Compare 3作为差异化工具。

请根据您的发现更新您的问题,因为我想知道结果。