私はPythonのsudsでこの奇妙なケースのシナリオを持っています。
ローカルIPで実行されているsoapサービス(java)があります。http://10.0.0.1:8080/services/
ローカルネットワーク内でsudshttpbase 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からURLにアクセスしようとしましたhttps://example.com/services/SiteManager?wsdl
が、403も返されます。
しかし、最初に他のルートを使用してサインインし(サーバーがtomcatで他のhttpページを実行している)、次にURLに再度アクセスすると、wsdldescページが表示されます。
誰かがこれの何が問題なのか教えてもらえますか?リバースプロキシサーバーまたはsudsトランスポートの構成と関係がありますか?
どうもありがとう!ジャッキー