mid*_*ori 3 python ssl python-2.7 python-requests
我有一个问题
我正在尝试将一些数据发布到网络服务器并获得响应.Webserver具有SSL证书验证,因此我为其提供文件.在响应中我应该收到xml文件,但我收到一些HTML.
我的小脚本看起来像这样:
import requests, sys, os
program_directory=sys.path[0]
verify = os.path.join(program_directory, "test.pem")
data='some data'
print requests.post('https://somewebsite', data=data, verify=verify).text
Run Code Online (Sandbox Code Playgroud)
这就是我在html之前得到的:
C:\Python27\lib\site-packages\requests\packages\urllib3\connection.py:251: SecurityWarning: Certificate has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/shazow/urllib3/issues/497 for details.) SecurityWarning
Run Code Online (Sandbox Code Playgroud)
如果我使用verify=False
并且不提供文件,它可以正常工作并返回正确的数据.什么可能是一个问题,为什么我会收到此警告和HTML?
这是因为在较旧的Python版本中,_ssl模块不会在SSL证书的字段集中返回"subjectAltName".即使存在也不返回该字段意味着即使SSL证书有效,检查也将失败并记录警告.
要消除警告,您可以全局禁用urllib3警告.
requests模块包含urllib3的捆绑版本,您很可能需要使用:
import requests
requests.packages.urllib3.disable_warnings()
Run Code Online (Sandbox Code Playgroud)
如果您只想忽略该特定警告,可以使用:
from requests.packages.urllib3.exceptions import SubjectAltNameWarning
requests.packages.urllib3.disable_warnings(SubjectAltNameWarning)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2871 次 |
最近记录: |