Страница Coldfusion выполняется дважды - PullRequest
0 голосов
/ 29 мая 2020

Привет, у меня странная проблема. На нашем сервере разработки страницы 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

Любые мысли о том, что вызывает эту проблему.

ОБНОВЛЕНИЕ

Я использую правила перезаписи. Я протестировал отключение правил перезаписи (как было предложено Мигелем-Ф), и тогда страница выполняется только один раз. При добавлении простого правила перезаписи, подобного этому, страница выполняется дважды:

<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 (Рабочий сервер работает на той же версии и не имеет проблем )

1 Ответ

2 голосов
/ 30 мая 2020

Это не совсем ответ, а очень длинный комментарий.

Вам нужно выяснить, это один или два запроса. Добавьте такой код:

  <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

...