【发布时间】:2023-04-02 19:12:01
【问题描述】:
在我的 python 脚本中,我尝试按如下方式调用我的 api:
with requests.Session() as session:
url= 'https://example.com'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
request_parameters = {'username': 'test', 'password':'pass'}
response = (session.post(auth_url, data=request_parameters, headers=headers))
我收到以下异常:
File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 518, in post return self.request('POST', url, data=data, json=json, **kwargs)
File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File "C:\Users\Programs\Python\Python36\lib\site- packages\requests\adapters.py", line 477, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)
我想将我的服务称为https://example.com。它适用于 http:// 连接,但不适用于 https://。
我应该为 https 连接做什么?此外,当我通过 Rest Client 作为 https 调用服务时,它可以完美运行。
有没有其他方法可以将服务调用为 https 连接?
【问题讨论】:
-
如果您尝试连接到通过 nginx 或 apache 等反向代理运行的域,您必须使用来自合法提供商的有效证书(更好)或自签名证书(更糟糕)来配置服务器)。
-
除了配置服务器还有其他方法吗?为什么它可以通过 Advance Rest Client 工作?
-
如果您使用域名,则域名具有关联的公共 IP 和 DNS 记录 (CNAME) - 如果您在 VPN 中创建某些内容,则可以通过 IP 地址进行通信,但使用公共域名假定您正在使用服务器,启用了某种证书和 SSL。您仍然可以使用 localhost 和 127.0.0.1 进行本地测试。
标签:
python
ssl-certificate
python-requests
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 请求。 [SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:645)[重复] - Python技术站