2017-01-19 4 views
0

プール内に各https接続を作成した後に追加手順が実行されるhttpsエンドポイントへの接続プールを作成したいとします。ステップは、そのようhttps callを作ることです。追加の認証手順を追加するためにurllib3接続の作成を拡張するにはどうすればよいですか?

POST /_session HTTP/1.1 
Content-Length: 32 
Content-Type: application/x-www-form-urlencoded 
Accept: */* 

name=YourUserName&password=YourPassword 

成功した場合は、応答クッキーは例えば、返されます。この余分なステップは行くだろう

200 OK 
Cache-Control: must-revalidate 
Content-Length: 42 
Content-Type: text/plain; charset=UTF-8 
Date: Mon, 04 Mar 2013 14:06:11 GMT 
server: CouchDB/1.0.2 (Erlang OTP/R14B) 
Set-Cookie: AuthSession="a2ltc3RlYmVsOjUxMzRBQTUzOtiY2_IDUIdsTJEVNEjObAbyhrgz"; Expires=Tue, 05 Mar 2013 14:06:11 GMT; Max-Age=86400; Path=/; HttpOnly; Version=1 
x-couch-request-id: a638431d 

?たとえば、_new_connメソッドを拡張する必要がありますか?

class CustomHTTPSConnectionPool(HTTPSConnectionPool): 

    def _new_conn(self): 
     conn = super(CustomHTTPSConnectionPool, self)._new_conn() 
     ... call '/_session' and save cookie 
     return conn 

もう1つの考慮点は、クッキーが期限切れになり、期限切れになる前に更新することです。私はちょうどそれをここに注目しています、それはおそらく別の質問の対象にすべきです。 (コメントで述べたように)

+0

独自のCustomHTTPSConnectionPoolを作成しようとしている場合は、正しい軌道に乗っています。しかし、あなたがリンクしているドキュメントを読んで、私はあなたがこれを必要とは思わない?状態は接続ではなくクッキーに保持されているようですので、ハンドシェイクを行い、クッキーを取得し、各リクエストでクッキーを渡して接続に関係なく行ってもいいと思うだけです。 – shazow

+0

ああ、そうです。それはたくさんの意味があります - ありがとう!これを回答に変換したい場合は、+1することができます。 –

答えて

1

独自のCustomHTTPSConnectionPoolを作成しようとしている場合、あなたは正しい軌道に乗っています。

あなたがリンクしているドキュメントを読むと、私はあなたがこれを必要とは思わないでしょうか?状態は接続ではなくクッキーで維持されているようですので、ハンドシェイクを行い、クッキーを取得し、それぞれのリクエストでクッキーを渡し、接続に関係なく行ってください。

関連する問題