Coldfusion REST API возвращает «ошибка соединения». Код статуса недоступен. ' когда вызывается удаленно - PullRequest
2 голосов
/ 11 октября 2010

Теперь я хочу добавить к этому префикс. Я не уверен, должно ли это быть здесь или на сервере, поэтому я опубликую его здесь для начала.

Мы разрабатываем REST API в Coldfusion 9, который размещается на IIS 7 для клиента, который при определенных вызовах должен вызывать другой внутренний веб-сервис. При выполнении этих вызовов с сервера, на котором размещен API, ошибок нет, однако при выполнении вызова с удаленного компьютера возвращается следующее сообщение:

'сбой соединения. код состояния недоступен. '

Я погуглил проблему, в которой было предложено следующее исправление http://www.talkingtree.com/blog/index.cfm/2004/7/28/20040729, но оно не работает для меня. Ниже приведены заметки из моего собственного тестирования:

  • Вызовы, вызывающие проблему, представляют собой сочетание get, put, post и delete.
  • Единственная общая часть каждого вызова - это разговор с одним и тем же веб-сервисом.
  • Я могу звонить в веб-сервис напрямую из тех мест, откуда я делаю удаленные вызовы API.
  • Хотя все вызовы совершают вызов в один и тот же веб-сервис, они не все делают один и тот же вызов веб-сервису.

Ответы [ 2 ]

2 голосов
/ 11 октября 2010

Идеи:

Удаленный вызов веб-службы с использованием URL-адреса, который разрешает доступ к внутреннему серверу ColdFusion (например, http://[servername]:8300).. Возможно, вам потребуется некоторая конфигурация, чтобы это работало. Причиной для этого является определениеесли IIS или ColdFusion являются основной причиной. Если вы можете подключиться к внутреннему серверу удаленно, вероятно, проблема в IIS.

Является ли вызов веб-службы по SSL? Если да, то является ли удаленный абонент также ColdFusion? Если выОтветив на оба вопроса «да», проверьте, является ли сертификат SSL доверенным для JVM удаленного абонента. Если нет, необходимо зарегистрировать его как часть хранилища ключей JVM.

Можете ли вы пропинговать сервер хоста от вызывающего абонента? Если нет, нужен ли вызывающей стороне запись "hosts"?

Если эта функция включена на вашем хосте, просмотрите фильтр .NET и его взаимодействие с HTTP-вызовами. Я столкнулся с ситуацией, когда мне не удалосьдоступ к папке с именем "/ bin", поскольку фильтр .NET перехватил запросы.

0 голосов
/ 13 октября 2010

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

Это вызывает проблему, поскольку IIS предполагает, что если аутентификация пройдена, то она предназначена для пользователя на этом компьютере / в домене и будет отклонять любые другие учетные данные (которые действительны для системы). Это работало, когда мы вошли в систему, потому что она приходила локально, ей не нужно было аутентифицировать пользователя.

...