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中的请求函数(我不久前编写的一个简单测试框架)。

于 2009-10-06T16:25:22.290 回答