2015-03-25 3 views
1

Я пытаюсь выполнить вызов CFHTTP с помощью Lucee 4.5. Тестовый код на моей основной рабочей станции в порядке (запуск CF 10), но при копировании точно на ноутбук с Lucee, если он с ошибкой 400 ошибочных ошибочных заголовков отправлено. НижеLucee Soap 400 Ошибка; работает нормально как есть в CF

#XML Being Passed 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <SOAP-ENV:Body> 
    <m:Authenticate xmlns:m="http://foo.com/2005/">  
     <m:userName>xxxxx</m:userName> 
     <m:password>xxxxx</m:password> 
    </m:Authenticate> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 


#Partial Codebase; 'variable' is XML posted above 
<cfhttp url="http://xxxxxxx?WSDL" method="post" result="theCFHTTP" compression="false"> 
      <cfhttpparam type="HEADER" name="Content-Type" value="text/xml; charset=utf-8"> 
      <cfhttpparam type="HEADER" name="Accept" value="application/soap+xml, application/dime, multipart/related, text/*"> 
      <cfhttpparam type="HEADER" name="User-Agent" value="Axis/1.1"> 

      <cfhttpparam type="HEADER" name="Cache-Control" value="no-cache"> 
      <cfhttpparam type="HEADER" name="Pragma" value="no-cache"> 
      <cfhttpparam type="HEADER" name="SOAPAction" value="http://foo.com/2005/Authenticate"> 
      <cfhttpparam type="HEADER" name="Content-Length" value="#len(soap)#"> 
      <cfhttpparam type="xml" name="body" value="#soap#"> 
     </cfhttp> 

Я очень новый для Lucee и никогда не использовал Railo так что если есть уникальные кодировки или другие параметры конфигурации, которые должны быть сделано, я бы признателен за помощь.

Редактировать: Дальнейшие испытания показали, что я не могу использовать CFHTTP на любой странице за пределами самого ноутбука. Все внешние URL-адреса дают сообщение с плохим заголовком 400.

Я также добавил compression=false, чтобы Lucee не отправлял GZip-контент в адрес запроса.

возвращаемые заголовки моего рабочего станка:

  • кодирокой: UTF-8
  • Заголовок: HTTP/1.1 200 OK Cache-Control: частный, макс возраста = 0 Content-Type: текст/XML; charset = utf-8 Сервер: Microsoft-IIS/8.0 X-AspNet-версия: 4.0.30319 X-Powered-By: ASP.NET Дата: ср, 25 марта 2015 14:58:03 GMT Подключение: закрыть Content-Length: 603
  • Mimetype: текст/XML

возвращаемые заголовки неисправного станка:

  • Charset: US-ASCII
  • Заголовок: HTTP/1.1 400 Bad Request Content -Type: te х/html; Charset = US-ASCII Сервер: Microsoft-HTTPAPI/2,0 Дата: Ср, 25 марта 2015 15:06:18 GMT Подключение: закрыть Content-Length: 339
  • Mimetype: текст/html

19 мая EDIT:

Я проверил каждый из следующих корректировок отдельно в вызове CFHTTP на основе ответа Фабия:

  1. Я удалил заголовок параметров Content-Type, или
  2. Изменен параметры тела от «XML» в «тело»

Ни работал, хотя мое сообщение об ошибке изменилось к 400 Bad Request. Дамп вызова CFHTTP говорит, что я отправляю неверный XML, хотя независимые проверки подтверждают, что он действительно действителен. Ошибка при вызове аутентификации маркера.

+0

Поскольку у вас есть тот, который работает и тот, который не делает. Я запустил бы ваш инструмент мониторинга сети (инструменты браузера могут это сделать) и сравните заголовки, отправленные с рабочего сервера и нерабочего сервера. Затем сообщите о том, что вы видите, и мы пойдем оттуда. –

+0

Я добавил ваш запрос. –

+0

Мы больше заинтересованы в заголовках запросов, поскольку они, по-видимому, являются причиной этой проблемы. Вы можете сравнить их и включить то, что найдете. Также есть ли межсетевой экран, прокси-сервер или что-то еще между неудачной машиной и Интернетом? Вы можете просматривать веб-сайт на том же компьютере с помощью браузера? –

ответ

0

У меня была такая же проблема сегодня. Наконец то я понял!

Я понюхал сетевой трафик с использованием ТСРйитра и это выглядело как наша просьба IIS7 содержала Content-Type заголовка дважды, что приводит к уродливому

Bad Request - Неправильный заголовок Имя ошибки

проблема заключается в параметре тела:

<cfhttpparam type="xml" name="body" value="#soap#"> 

Lucee устанавливает Con заголовок tent-Type соответственно, text/xml; UTF-8 ... затем устанавливает его еще раз с учетом других параметров:

<cfhttpparam type="HEADER" name="Content-Type" value="text/xml; charset=utf-8"> 

У вас есть два варианта:

  1. отпуск типа = «XML» для вашего cfhttpparam тега, и удалите явное MIME + кодировки паров
  2. изменить тип = «XML» для типа = «тела» и вручную настроить все заголовки
+1

Что бы я изменил, если бы мне пришлось вручную устанавливать заголовки? Я уже указываю их, нет? –

+0

Правильно, мне также нужно было установить их вручную. Просто не делайте этого дважды: измените тип = XML на тип = BODY, и все готово. –