嗨,我有个奇怪的问题。在我们的开发服务器上,coldfusion页面被执行了两次。每次都会发生这种事。为了找出造成这一问题的原因,我向自己发送了一封电子邮件,其中包含了请求的详细信息:
<Cfmail from="*" to="*" type="html">
<cfdump var=#GetHttpRequestData()#>
#gettickcount()#
#createUUID()#
</cfmail>当调用包含.cfm的页面时,我会得到以下响应:
content [empty string]
headers struct
TOMCATCGIHTTPURL000000006A6B0000 /test.cfm
accept */*
content-length 0
host *
user-agent curl/7.40.0
method GET
protocol HTTP/1.1
1590760731452
C7487929-D679-B029-6E236DEE7E19B8EB 和第二封邮件
content [empty string]
headers struct
X-Original-URL /test.cfm
accept */*
content-length 0
host *
user-agent curl/7.40.0
method GET
protocol HTTP/1.1
1590760731425
C7487814-FA6F-4699-182C2E7382A06A47 现在最奇怪的是。当我调用一个没有文件名的index.cfm时,这个页面只执行一次。例如,将位于/test/index.cfm上的页面调用为/test/返回为单个响应:
content [empty string]
headers struct
X-Original-URL /test/
accept */*
content-length 0
host *
user-agent curl/7.40.0
method GET
protocol HTTP/1.1
1590762636945
C86B3A74-025F-6DBA-EA187DFEF7751F03 环境详细信息: Windows 2016 server,IIS 10,Coldfusion 2016
对是什么导致了这个问题有任何想法。
更新
我用重写规则。我测试了禁用重写规则(如Miguel-F所建议的),然后页面只执行一次。当添加这样的简单重写规则时,页面会执行两次:
<rule name="Test rule" stopProcessing="true">
<match url="^(.*)$" />
<action type="Rewrite" url="/{R:1}" appendQueryString="true" />
</rule>此行为仅发生在我们的开发服务器上。我们的生产服务器没有这些问题,而且还运行在windows 2016、IIS 10和coldfusion 2016上。
Coldfusion版本用于开发服务器: 2016.0.13.316217 (生产服务器运行在完全相同的版本上,没有问题)
发布于 2020-05-30 17:50:47
这不是一个真正的答案,而是一个很长的评论。
你需要弄清楚这是一个请求还是两个请求。添加如下代码:
<cfparam name="request.count" default="0">
<cfset request.count++>
<Cfmail from="*" to="*" type="html">
<cfdump var=#GetHttpRequestData()#>
Request.count: #request.count#
<br />
#gettickcount()#
#createUUID()#
</cfmail>如果该文件被请求两次,则每封电子邮件将显示1。
如果以某种方式包含了该文件,那么第二封电子邮件将显示请求计数为2。
https://stackoverflow.com/questions/62088447
复制相似问题