问题描述
我正在尝试访问位于 alb 后面的 Nginx 服务器。我正在使用 pycurl
触发一个简单的 HTTP2 POST 请求。我的请求看起来像这样'
import io
import pycurl
curl = pycurl.Curl()
curl.setopt(curl.URL,"https://alb-xxxx.us-east-1.elb.amazonaws.com/endpoint")
curl.setopt(pycurl.HTTP_VERSION,pycurl.CURL_HTTP_VERSION_2_PRIOR_KNowLEDGE)
curl.setopt(pycurl.POST,1)
curl.setopt(pycurl.VERBOSE,1)
curl.setopt(pycurl.SSL_VERIFYPEER,0)
curl.setopt(pycurl.SSL_VERIFYHOST,0)
with io.BytesIO() as buf:
curl.setopt(curl.WRITEFUNCTION,buf.write)
curl.perform()
print(buf.getvalue())
curl.close()
我得到的错误是
error Traceback (most recent call last)
<ipython-input-91-0756005b6c1b> in <module>()
16 with io.BytesIO() as buf:
17 curl.setopt(curl.WRITEFUNCTION,buf.write)
---> 18 curl.perform()
19 print(buf.getvalue())
20 curl.close()
error: (92,'HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)')
错误的发生是随机的。有时我得到正确的回应,有时我得到这样的错误。但是当我尝试在 curl 中做同样的事情时,我总是得到正确的响应。这是我的 curl 命令。
curl -v -k --http2-prior-kNowledge -X POST https://alb-xxx.us-east-1.elb.amazonaws.com/endpoint
我的帖子请求响应是一个字符串({"field":"value"}
)。我的 Nginx 配置文件是这样的
location =/endpoint {
if ($request_method = POST) {
return 200 '{"field":"value"}';
}
}
我不知道为什么我在 curl 中得到了正确的响应,但在 pycurl
中得到了不同的响应。我在 pycurl
中做错了什么吗?
Pycurl 版本 -> 7.43.0.6 Python 版本 -> 3.8.5
谢谢。任何帮助表示赞赏。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)