ColdFusion CFHTTP Post выполняет второй запрос GET сразу после

Я использую ColdFusion 8.

Я делаю CFHTTP Post на удаленный сервер. Удаленный сайт просмотрел свои журналы, и они говорят, что мой код выполняет POST, а затем сразу же выполняет второй запрос GET.

Вот мой код (URL-адрес изменен):

<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#">

Кто-нибудь знает, почему они видят второй запрос GET сразу после моего POST? из-за этого он сбрасывает сеанс и не возвращает страницу правильно (мы думаем)

Я определенно не делаю GET, я делаю только один POST.

Благодарность,

Богатый


person Rich    schedule 03.06.2009    source источник
comment
Не могли бы вы добавить подробности журнала? Выдает ли он GET для того же файла, что и POST на удаленном сервере? Какой код состояния выдается для POST?   -  person Jayson    schedule 04.06.2009
comment
Если вы удалите части cfoutput и cfdump, вы все равно получите то же поведение?   -  person Kip    schedule 04.06.2009


Ответы (5)


Я предполагаю, что причина, по которой вы получаете второй GET, заключается в том, что ваш CFOUTPUT выводит полученное содержимое страницы в браузер, а затем, когда изображение или что-то из этого содержимого отображается с полученной страницы, оно действует как GET.

Помните, что CFHTTP не сохраняет состояние. Под этим я подразумеваю, что каждый запрос с CFHTTP будет создавать новую сессию. Вы можете заставить CFHTTP продолжить существующий сеанс, передав CFID/CFTOKEN через CFHTTPPARAM в запросе. Это может объяснить ваши проблемы с сессией.

person Dave Quested    schedule 04.06.2009
comment
Вы можете проверить это... удалите тег cfdump и измените cfouput на это: ‹cfoutput›‹pre›#HTMLEditFormat(cfhttp.fileContent)#‹/pre›‹/cfoutput›. Это покажет вам, что именно вы получаете, и убедитесь, что браузер не делает никаких дополнительных запросов. - person Kip; 04.06.2009

redirect="false" //maybe?

Не уверен... Поскольку доктор сказал...

Если заголовок ответа включает поле Location И ColdFusion получает код состояния серии 300 (перенаправление), указывает, следует ли перенаправлять выполнение на URL-адрес, указанный в поле.

person Henry    schedule 03.06.2009

Если вы используете firefox, убедитесь, что у вас отключены firebug и ySlow для вашего запроса. Они дважды запускают ваши URL-адреса, чтобы настроить свои данные, и могут стать настоящей проблемой, когда вы не знаете, что они делают это.

Кроме того, попробуйте отключить перенаправление, если оно вам не нужно.

person anopres    schedule 08.06.2009
comment
Спасибо. оказывается, после того, как я переключился обратно на CF5 (с CF8), 2-й GET остановился. странный - person Rich; 09.06.2009

Хорошо, я переключился на сервер CF 5, и он перестал выполнять 2-й GET. сейчас он просто делает POST, так что это может быть причудой с CF 8.

person Rich    schedule 04.06.2009

Этот код находится внутри пользовательского тега CF? Если да, то звоните

<mytag>...</mytag>

or

<mytag />

Вызывает пользовательский тег ДВАЖДЫ! (Один раз для начального тега и один раз для конца.)

person Chris Nava    schedule 03.06.2009
comment
Это не объясняет, почему второе попадание — это GET. - person Antony; 04.06.2009
comment
Хотя я не думаю, что это объясняет первоначальную проблему, вы должны указать, как предотвратить такое поведение (при желании): ‹cfif thisTag.executionMode = end›‹cfexit method=exitTag/›‹/cfif› и всем, кто интересуется, почему это работает таким образом, следует прочитать эту страницу из livedocs: livedocs.adobe.com/coldfusion /8/htmldocs/reuseCode_7.html - person Adam Tuttle; 05.06.2009