подключение к умной статистике через cfhttp

Я пытаюсь подключиться к веб-сайту с более разумной статистикой, передав окно входа в систему и загрузив статистику на странице fancybox.

пока это мой код: но, похоже, он не работает

<cfhttp method="post" url="https://stats.ezhostingserver.com/" resolveurl="true" redirect="true">
    <cfhttpparam type="FORMFIELD" name="ctl00$MPH$txtUserName" value="test.ca">
    <cfhttpparam type="FORMFIELD" name="ctl00$MPH$txtPassword" value="mypwd!">
    <cfhttpparam type="FORMFIELD" name="ctl00$MPH$txtSiteId" value="12343">
</cfhttp>
<cfif cfhttp.statuscode EQ '200 OK'>
    <cfhttp result="results" url="https://stats.ezhostingserver.com/default.aspx"/>
    <cfoutput>
        #results.filecontent#
</cfoutput>     
</cfif>

проблема в том, что каждый раз, когда я загружаю страницу

http://domain.in/index.cfm возвращается на http://domain.in/stats/Login.aspx

Я использую статистику веб-сайта hostek для домена


person Community    schedule 09.04.2017    source источник
comment
Использование защищенных паролем сайтов с cfhttp может быть проблематичным, потому что вам придется выяснить, какие файлы cookie используются для связывания соединения с безопасным входом в систему. Затем вам нужно будет передавать эти файлы cookie со всеми вызовами cfhttp, которые вы делаете после этого.   -  person Scott Jibben    schedule 10.04.2017
comment
SmarterStats имеет интерфейс веб-сервиса, который может работать лучше, чем cfhttp. stats.smartertools.com/services   -  person Scott Jibben    schedule 10.04.2017


Ответы (1)


Причина, по которой ваш код ведет себя таким образом, заключается в том, что исходный URL-адрес, указанный в вашем теге cfhttp, возвращает перенаправление HTTP 302. Затем, поскольку у вас есть атрибут redirect тега cfhttp, установленный на true, он фактически выполняет перенаправление. Посмотрите документацию для этого атрибут:

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

  • yes: перенаправляет выполнение на указанную страницу.
  • no: останавливает выполнение и возвращает информацию об ответе в переменной cfhttp или выдает ошибку, если атрибут throwOnError имеет значение True.
    Переменная cfhttp.responseHeader.Location содержит путь перенаправления. ColdFusion следует максимум четырем перенаправлениям по запросу. Если их больше, ColdFusion работает так, как если бы redirect = "no".
    Примечание. Тег cflocation генерирует ответ HTTP 302 с атрибутом url в качестве значения заголовка Location.

Поэтому вместо того, чтобы использовать этот начальный URL-адрес для вашего запроса cfhttp, попробуйте использовать URL-адрес, на который он перенаправляется. И установите для атрибута redirect значение false. Но имейте в виду, что если для этого атрибута установлено значение false, тег выдаст ошибку, если получит код состояния перенаправления, поэтому вам нужно будет обработать это.

Пример:

<cfhttp method="post" 
        url="https://stats.ezhostingserver.com/Login.aspx" 
        resolveurl="true" 
        redirect="false">
person Miguel-F    schedule 10.04.2017
comment
я попробую это сегодня и посмотрю, что у меня получится, держите вас в курсе здесь - person ; 12.04.2017
comment
Привет @miguel: я попробовал ваш код и получил это сейчас, он говорит, что объект перемещен и показывает 302, найденный в заголовке ответа prntscr.com/ евбвад - person ; 12.04.2017
comment
Вы изменили URL-адрес, а также атрибут redirect? Вы должны запрашивать у https://stats.ezhostingserver.com/Login.aspx, куда 302 Found говорит вам идти. Обратите внимание, что это Login.aspx, а не default.aspx. - person Miguel-F; 12.04.2017
comment
я ничего не менял, я просто вставил то, что отправляю в свой запрос, это то, что я передаю <cfhttp method="post" url="https://stats.ezhostingserver.com/" resolveurl="true" redirect="false"> - person ; 12.04.2017
comment
я изменил URL-адрес, как вы указали, и перейдите по этому адресу и проверьте gr-group.in/stats/ index.cfm - person ; 12.04.2017
comment
Итак, похоже, вы решаете проблему, о которой вы спрашивали в этом вопросе. Примите этот ответ, если он вам помог, и задайте новый вопрос (если он у вас есть). - person Miguel-F; 12.04.2017
comment
Могу ли я задать связанный с этим вопрос, потому что теперь мне нужно пройти аутентификацию этой страницы, и, похоже, это связано с javascript - person ; 12.04.2017
comment
Конечно, но, пожалуйста, задайте его как новый вопрос. В противном случае этот вопрос/ответ станет неактуальным. Вы всегда можете вернуться к этому вопросу, если считаете, что это необходимо. - person Miguel-F; 12.04.2017