4

我正在使用 ColdFusion 8。

我正在向远程服务器发送 CFHTTP Post。远程站点查看了他们的日志,他们说我的代码正在执行 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。

谢谢,

富有的

4

5 回答 5

5

我猜您获得第二个 GET 的原因是您的 CFOUTPUT 将检索到的页面内容输出到浏览器中,然后当从检索到的页面呈现来自该内容的图像或某些内容时,它充当 GET。

请记住,CFHTTP 不是有状态的。我的意思是每个使用 CFHTTP 的请求都会创建一个新会话。您可以通过在请求中使用 CFHTTPPARAM 传入 CFID/CFTOKEN 来让 CFHTTP 继续现有会话。这可能会解释您的会话问题。

于 2009-06-04T00:50:47.853 回答
0
redirect="false" //maybe?

不确定...因为医生说...

如果响应头包含 Location 字段并且 ColdFusion 接收到 300 系列(重定向)状态代码,则指定是否将执行重定向到该字段中指定的 URL。

于 2009-06-03T22:26:59.673 回答
0

好的,我切换到 CF 5 服务器,它停止执行第二次 GET。它只是POST现在做的,所以它可能是 CF 8 的一个怪癖。

于 2009-06-04T17:06:25.797 回答
0

如果您使用的是 firefox,请确保您已为您的请求关闭了 firebug 和 ySlow。他们两次触发您的网址来设置他们的数据,当您不知道他们正在这样做时,这可能是一个真正的问题。

此外,除非您需要,否则请尝试关闭重定向。

于 2009-06-08T12:59:18.910 回答
-1

此代码是否在自定义 CF 标记内?如果是这样,那么打电话

<mytag>...</mytag>

或者

<mytag />

两次调用自定义标签!(一次用于开始标签,一次用于结束。)

于 2009-06-03T23:56:00.913 回答