[OK]を、私はそれで少し周りをプレイしました。
少しテストサーバー(courtesy of soaplib)、第一:Cookieヘッダを設定するためにいくつかの小さな変更を加え
import soaplib
from soaplib.core.service import rpc, DefinitionBase, soap
from soaplib.core.model.primitive import String, Integer
from soaplib.core.server import wsgi
from soaplib.core.model.clazz import Array
import sys, pprint
class HelloWorldService(DefinitionBase):
@soap(String,Integer,_returns=Array(String))
def say_hello(self,name,times):
results = []
for i in range(0,times):
results.append('Hello, %s'%name)
return results
class WsgiApp(wsgi.Application):
def on_wsgi_return(self, env, headers, return_str):
headers['Set-Cookie'] = 'spam=eggs;domain=127.0.0.1;path=/'
print >>sys.stderr, headers
if __name__=='__main__':
try:
from wsgiref.simple_server import make_server
soap_application = soaplib.core.Application([HelloWorldService], 'tns')
wsgi_application = WsgiApp(soap_application)
server = make_server('localhost', 7789, wsgi_application)
server.serve_forever()
except ImportError:
print "Error: example server code requires Python >= 2.5"
。
と泡-testclient:これを実行している
from suds import client, transport
c = client.Client("http://127.0.0.1:7789/?wsdl")
print c.service.say_hello("spam", 1)
print c.options.transport.cookiejar
は生成します。
(stringArray){
string[] =
"Hello, spam",
}
<cookielib.CookieJar[<Cookie spam=eggs for .127.0.0.1/>]>
はそれが動作するように縫い目。しかし、あなたはhttp://localhost:7789/?wsdl
に要求URLを変更した場合、あなたが買ってあげる:
クライアントで
cookielib
のためにいくつかのログをオンに
(stringArray){
string[] =
"Hello, spam",
}
<cookielib.CookieJar[]>
...
import logging
import cookielib
logging.basicConfig()
logging.getLogger('cookielib').setLevel(logging.DEBUG)
cookielib.debug = True
を...、それはなぜ明らかに明らかに:
DEBUG:cookielib:add_cookie_header
DEBUG:cookielib:extract_cookies: Date: Thu, 17 May 2012 15:56:01 GMT
Server: WSGIServer/0.1 Python/2.7.3
Set-Cookie: spam=eggs;domain=127.0.0.1;path=/
Content-Length: 822
Content-Type: text/xml
DEBUG:cookielib: - checking cookie spam=eggs
DEBUG:cookielib: effective request-host localhost.local (even with added initial
dot) does not end with .127.0.0.1
(stringArray){
string[] =
"Hello, spam",
}
<cookielib.CookieJar[]>
簡単な説明は次のとおりです。クッキードメインはリクエストのサーバードメインと一致しません。cookielib
は確認時にルックアップを行いませんドメイン。
ので、溶液は1次のようになります。(ドメイン名またはIPのいずれか)、クライアントとサーバーが同じドメインを使用してください
の例では、私はそれを動作させるためにlocalhost.local
の両方を設定する必要があります(5月ファイルhosts
に依存しています...)
- その後、
cookieib
が
- 自動的にリクエストのドメインを使用していますああ
DNSルックアップを使用してのCookieJar、及び少なくとも最後のではなく、実装、送られたクッキーからドメインを削除する:それはしなかった理由をOPの質問の作業:
ポートがドメインの一部でないため、Domain=10.242.69.4:8088
のクッキーは常に拒否されます。