Trong một ứng dụng khách Savon dùng HTTPI, proxy thuộc phần tùy chọn của ứng dụng khách. Nó áp dụng khi lấy WSDL từ xa và khi gửi yêu cầu SOAP.

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

Ví dụ giả định dùng transport HTTPI. Cung cấp URL proxy đã được phê duyệt qua biến môi trường. Với một bài kiểm thử SOAP công khai cho phép trung gian HTTP không xác thực, một ứng viên từ danh sách proxy HTTP có thể cung cấp URL đó; hãy tách biệt quyết định xác thực của dịch vụ và của proxy. Nếu phương thức xác thực được hỗ trợ dùng thông tin xác thực nằm trong URL, hãy mã hóa các ký tự dành riêng trong thông tin đó và giữ URL tạo ra ngoài nhật ký.

Savon gọi chúng là “tùy chọn toàn cục”, nhưng chúng chỉ cục bộ với một thực thể ứng dụng khách. Một ứng dụng khách được tạo ở nơi khác không tự động kế thừa proxy.

Kiểm tra transport đã cài đặt trước khi dùng lại đoạn mã. Tài liệu hiện tại của Savon gán các tùy chọn này cho HTTPI; transport Faraday có giao diện cấu hình riêng qua client.faraday và từ chối các tùy chọn dành riêng cho HTTPI này. Hãy cấu hình transport đã chọn thay vì trộn hai giao diện.

Giữ tài khoản proxy tách khỏi thông tin xác thực của dịch vụ SOAP và các giá trị WS-Security. Mã 407 của proxy, thử thách đăng nhập HTTP của dịch vụ và lỗi SOAP chỉ ra những trao đổi khác nhau. Việc lấy WSDL có thể thất bại trước khi ứng dụng khách thực hiện bất kỳ thao tác ứng dụng nào.

Bài viết liên quan