我有这个奇怪的案例场景与python suds。
我有一个在本地ip上运行的soap服务(java),比如http://10.0.0.1:8080/services/
我在本地网络中使用suds http base auth,它运行正常。
from suds.client import Client
c = Client(url, username="user", password="pass")
但我想让它可以从外部访问,所以我问系统管理员:“你能为这个肥皂服务设置一个外部IP使用反向代理”
“是的,但公司防火墙不允许端口8080,因此您的规则将是:
http://10.0.0.1:8080/services/*
< - > https://example.com/services/*
然后规则设置但我无法使客户端工作。我试过各种交通工具:
from suds.transport.https import WindowsHttpAuthenticated
from suds.transport.http import HttpAuthenticated
#from suds.transport.https import HttpAuthenticated
from suds.client import Client
http = HttpAuthenticated(username="jlee", password="jlee")
#https = HttpAuthenticated(username="jlee", password="jlee")
ntlm = WindowsHttpAuthenticated(username="jlee", password="jlee")
url = "https://example.com/services/SiteManager?wsdl"
c = Client(url, transport = http)
它总是返回:
suds.transport.TransportError: HTTP Error 403: Forbidden ( The server denied the specified Uniform Resource Locator (URL). Contact the server administrator. )
我尝试从Chrome访问网址https://example.com/services/SiteManager?wsdl
,它也返回403!
但是如果我首先使用其他路由登录(我的服务器在tomcat上运行其他http页面),然后再次访问该URL,则显示wsdl desc页面!
有谁可以告诉我这有什么问题?它与反向代理服务器或suds传输的配置有关吗?
非常感谢! 济
答案 0 :(得分:0)
通过与系统管理员(谁负责设置反向代理)交谈找到解决方案,他说MS DMZ(反向代理服务器)中有一个复选框选项,允许http base auth。