HTTPI를 사용하는 Savon 클라이언트에서 프록시는 클라이언트 옵션의 일부입니다. 원격 WSDL을 가져올 때와 SOAP 요청을 보낼 때 모두 적용됩니다.

client = Savon.client(
  wsdl: 'https://service.example/soap?wsdl',
  proxy: ENV.fetch('SOAP_PROXY_URL'),
  open_timeout: 5,
  read_timeout: 15
)

예제는 HTTPI 전송을 전제로 합니다. 승인된 프록시 URL을 환경 변수로 전달하세요. 인증 없는 HTTP 중계를 허용하는 공개 SOAP 테스트라면 HTTP 프록시 목록의 후보가 그 URL을 제공할 수 있습니다. 서비스 인증과 프록시 인증에 대한 결정은 분리해 두세요. 지원되는 인증 방식이 URL 안의 자격 증명을 사용한다면 해당 자격 증명의 예약 문자를 인코딩하고 결과 URL을 로그에 남기지 마세요.

Savon은 이를 “전역 옵션”이라고 부르지만 실제로는 클라이언트 인스턴스에만 해당합니다. 다른 곳에서 만든 클라이언트는 프록시를 자동으로 상속하지 않습니다.

스니펫을 다시 쓰기 전에 설치된 전송을 확인하세요. 현재 Savon 문서는 이 옵션들을 HTTPI에 배정합니다. Faraday 전송은 client.faraday를 통한 자체 설정 인터페이스를 가지며 HTTPI 전용 옵션은 거부합니다. 두 인터페이스를 섞지 말고 선택한 전송을 구성하세요.

프록시 계정은 SOAP 서비스 자격 증명과 WS-Security 값과 분리해 두세요. 프록시의 407, 서비스의 HTTP 로그인 요구와 SOAP 폴트는 서로 다른 교환을 나타냅니다. WSDL 가져오기는 클라이언트가 애플리케이션 작업을 하기도 전에 실패할 수 있습니다.

관련 글