1 、目标是本地电脑(开发环境) request 一个 API ,取得返回的 JSON 。
2 、本地使用 request 请求 API 的 https 地址时,报了这个错:
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))
3 、本地使用 request 请求别的网址: zhihu.com 、 github.com ,都用 https ,则不会出错。
4 、上自己的一台服务器请求这个 API 则也不报错。
5 、用本地电脑的 Postman 、火狐里的接口调试工具请求这个 API ,也是 HTTPS ,则又可以正常返回不报错。
6 、确认不是 API 服务器防火墙的问题。
也不知道问题出在哪里,没有思路,请教大神这种问题一般从哪里排查起?
1
4everLoveU 2016-06-06 11:07:10 +08:00
看看 openssl python
|
2
SuperFashi 2016-06-06 11:07:42 +08:00 via Android
试试改 ua 头,有可能封了 requests 的默认 ua
|
3
anexplore 2016-06-06 12:51:01 +08:00
会不会是证书问题,设置接受任何证书试一试
|
4
ayaseangle 2016-06-06 12:59:27 +08:00
reset by peer
|
5
qq7171891 OP @SuperFashi
@anexplore @ayaseangle 谢谢各位的回答。目前看来是我电脑的问题。别人的电脑 requests.get 就没问题,就我有问题。我自己查查问题出在什么地方。 MACOSX 伤不起啊,人家 WINDOWS 都是好的。 |
6
dawncold 2016-06-06 19:05:03 +08:00
应该用 curl 试一下
|
7
haofly 2016-06-07 09:13:35 +08:00
前几天我也遇到过这个问题,我是因为把 requests 的 get 和 post 的使用方法搞错了, get 的参数是 param ,而 post 的参数是 data
|
8
qq7171891 OP @haofly 我没有附加任何参数。服务器看了下请求的情况,服务器收到请求,回文失败了。。正在查原因中……看起来是本地环境出了问题。
|
10
qq7171891 OP 已解决。
原因是服务器上 ssl_protocols TLSv1.2 TLSv1.1 已经不支持 TLSv1 ,没有 TLSv1 的支持, MAC 里的 OpenSSL 不是最新版本就会出现这个错误。 解决方案:服务器开 TLSv1 支持,或者更新自己电脑的 OpenSSL 。 |