首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP/2 Python-请求、HTTPX

HTTP/2 Python-请求、HTTPX
EN

Stack Overflow用户
提问于 2021-02-15 05:15:02
回答 1查看 2.6K关注 0票数 0

我目前正在尝试向服务器发出HTTP/2请求。

我意识到当使用HTTP/2时,我的请求失败了。(从服务器获得“不受支持”)

python--请求不支持HTTP/2,所以我使用了一个名为HTTPX的包装器构建,它确实支持HTTP/2。

代码语言:javascript
复制
r = httpx.Client(http2=True)
data = '{"username":"'+username+'","password":"'+password+'","client_id":"someclientid","ux_id":"com.nike.commerce.snkrs.ios","grant_type":"password"}'
response = r.post('https://unite.nike.com/login', headers=self.login_header, params=params, data=data)

我的请求没有出错,但我从服务器得到了“不支持”。我试图向Nike的公开登录后端端点提出请求,我知道他们有像akamai等机器人检测。我的印象是它使用特殊的证书--这些是我当时做的步骤。

  1. 转到了铬浏览器。
  2. 单击“证书”证书,然后单击“详细信息”细部

然后我点击了导出导出编码二进制x.509 (CER)

假设我做的一切都是正确的,那么我将.cer转换为.pem

代码语言:javascript
复制
openssl x509 -inform der -in exported_certificate.cer -out certificate.pem

然后我指定

代码语言:javascript
复制
export SSL_CERT_FILE='certificate.pem'

当我再次提出请求时,会得到以下错误:

代码语言:javascript
复制
httpx.ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)

最终,这就是我试图复制的客户机请求。

我想要达到的要求

根据屏幕截图,我的ios设备正在用密码名TLS_AES_256_GCM_SH384发出请求,使用TLSv1.3

EN

回答 1

Stack Overflow用户

发布于 2022-02-03 14:33:40

我想您早就解决了这个问题,但是对于其他类似的问题,服务器的响应表示不支持可能意味着服务器不支持HTTP2。

为了能够通过HTTP2提出请求,客户端不仅必须能够完成请求,而且服务器还必须积极支持HTTP2,否则您可能会得到上面的响应。

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

https://stackoverflow.com/questions/66203035

复制
相关文章

相似问题

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