首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zeep -关闭主机验证

Zeep -关闭主机验证
EN

Stack Overflow用户
提问于 2019-08-08 12:17:37
回答 1查看 1.6K关注 0票数 2

我正在使用Python zeep发出SOAP请求。对于SSL验证,添加HostHeaderSSLAdapter作为我的URL https://dev_alias:8096/some_soap,它包含一个别名而不是实际的主机名。

下面用requests编写的代码运行正常。所以我假设session是正确的。

代码语言:javascript
复制
import requests
from requests_toolbelt.adapters import host_header_ssl
from zeep.transports import Transport
from zeep import Client, Settings

url = 'https://dev_alias:8096/some_soap'
params = {'param1': 'value1'}

session = requests.Session()
session.verify = 'CertBundle.pem'
session.mount('https://', host_header_ssl.HostHeaderSSLAdapter())

headers = {'SOAPAction': '""', 'Content-Type': 'text/xml; charset=utf-8'}
message = b"<?xml version=\'1.0\' encoding=\'utf-8\'?>....</soap-env:Envelope>"

session.post(url, data=message, headers=headers)

但是,当zeep的Transport使用相同的session时,此代码将失败。

代码语言:javascript
复制
transport = Transport(session=session)
client = Client(url, transport=transport)
client.service.some_service(params)

SSLError: HTTPSConnectionPool(host='actual_hostname', port=8096): 
Max retries exceeded with url: /some_soap (Caused by SSLError(CertificateError(
"hostname 'actual_hostname' doesn't match 'dev_alias'",),))

如何使用zeep关闭主机名验证?使用zeep版本3.4.0 0和requests 2.22.0

EN

回答 1

Stack Overflow用户

发布于 2019-11-14 17:59:34

出于测试目的,您可能可以禁用ssl验证,如此处https://python-zeep.readthedocs.io/en/master/transport.html所述。

在这种情况下,将session.verify行更改为

代码语言:javascript
复制
session.verify = False

请注意,您几乎肯定不希望在生产系统中执行此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57405134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档