我有 Python 代码来调用类似这样的 REST 服务:
import urllib
import urllib2
username = 'foo'
password = 'bar'
passwordManager = urllib2.HTTPPasswordMgrWithDefaultRealm()
passwordManager .add_password(None, MY_APP_PATH, username, password)
authHandler = urllib2.HTTPBasicAuthHandler(passwordManager)
opener = urllib2.build_opener(authHandler)
urllib2.install_opener(opener)
params= { "param1" : param1,
"param2" : param2,
"param3" : param3 }
xmlResults = urllib2.urlopen(MY_APP_PATH, urllib.urlencode(params)).read()
results = MyResponseParser.parse(xmlResults)
MY_APP_PATH 当前是一个 HTTP url。我想将其更改为使用 SSL(“HTTPS”)。我将如何更改此代码以尽可能以最简单的方式使用 https?
最佳答案
不幸的是,urllib2
和httplib
,至少在 Python 2.7 之前,在使用 HTTPS 时不做任何证书验证。结果是您正在与您未必确定的服务器交换信息(这有点像与您未验证其身份的人交换 secret ):这违背了 HTTPS 的安全目的。
请参阅 httplib (in Python 2.7) 中的这句话:
Note: This does not do any certificate verification.
(这与能够发送客户端证书的httplib.HTTPSConnection
无关:这就是它的key
和cer
t 参数为。)
有很多方法可以解决这个问题,例如:
关于python - 修改 Python 代码以使用 SSL 进行 REST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704405/