0

これは私のコードがどのように見えるかです:

url_object = urlparse(url)
hostname = url_object.hostname
port = url_object.port
uri = url_object.path if url_object.path else '/'

ctx = SSL.Context()
if ctx.load_verify_locations(cafile='ca-bundle.crt') != 1: raise Exception("Could not load CA certificates.")
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, depth=5)
c = httpslib.HTTPSConnection(hostname, port, ssl_context=ctx)
c.request('GET', uri)
data = c.getresponse().read()
c.close()
return data

このコードで URL リダイレクトを無効にするにはどうすればよいですか? 上記のコードで接続オブジェクト「c」にこのオプションを設定する方法があることを願っています。

助けてくれてありがとう。

4

1 に答える 1

0

httpslib.HTTPSConnectionは自動的にリダイレクトしません。Lennartがコメントで述べているように、これはhttplib.HTTPConnectionからサブクラス化されており、どちらもリダイレクトされません。httplibでテストするのは簡単です:

import httplib

c = httplib.HTTPConnection('www.heikkitoivonen.net', 80)
c.request('GET', '/deadwinter/disclaimer.html')
data = c.getresponse().read()
c.close()
print data

これは印刷します:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.heikkitoivonen.net/deadwinter/copyright.html">here</a>.</p>
</body></html>

http(s)libを使用してリダイレクトを自分で処理する必要があります。たとえば、silmutのrequest関数(しばらく前に作成した単純なテストフレームワーク)を参照してください。

于 2009-10-06T16:25:22.290 に答える