我正在使用ColdFusion 8。
我正在向远程服务器发送CFHTTP帖子。远程站点查看了他们的日志,他们说我的代码正在执行POST,然后立即执行第二个GET请求。
这是我的代码(网址已更改):
<cfhttp url="https://www.theurlofthesite.com" method="POST" port="443" resolveurl="yes" redirect="yes">
<cfhttpparam type="FORMFIELD" name="type" value="SALES">
<cfhttpparam type="FORMFIELD" name="account" value="10003">
<cfhttpparam type="FORMFIELD" name="Submit" value="Submit+Request">
</cfhttp>
<Cfoutput>#cfhttp.fileContent#</CFOUTPUT>
<cfdump var="#cfhttp#">
有没有人知道为什么他们在我的POST后立即看到第二个GET请求?由于这个(我们认为)
,它正在破坏会话并且不能正确地回滚页面我肯定没有做GET,我只做一次POST。
感谢,
富
答案 0 :(得分:5)
我猜你得到第二个GET的原因是你的CFOUTPUT将检索到的页面内容输出到浏览器中,然后当从检索到的页面呈现图像或来自该内容的某些东西时,它就像一个GET。
请记住,CFHTTP不是有状态的。我的意思是每个使用CFHTTP的请求都会创建一个新会话。您可以通过在请求中传入CFID / CFTOKEN和CFHTTPPARAM来获得CFHTTP以继续现有会话。这可以解释您的会话问题。
答案 1 :(得分:0)
redirect="false" //maybe?
不确定......自从医生说......
如果响应头包含a 位置字段和ColdFusion接收 300系列(重定向)状态 代码,指定是否重定向 执行到。中指定的URL 字段。
答案 2 :(得分:0)
好的,我切换到CF 5服务器,它停止了第二次GET。它现在正在做POST
,所以它可能是CF 8的怪癖。
答案 3 :(得分:0)
如果您使用的是Firefox,请确保您已根据请求关闭了firebug和ySlow。他们两次点击您的网址来设置他们的数据,当您不知道他们正在这样做时,这可能是一个真正的问题。
此外,除非您需要,否则请尝试关闭重定向。
答案 4 :(得分:-1)
此代码是否在自定义CF标记内?如果是,那么请致电
<mytag>...</mytag>
或
<mytag />
调用自定义标签TWICE! (一次用于开始标记,一次用于结束。)