我使用curl发出请求,响应说不支持HTTP版本,错误505.支持HTTP版本的步骤是什么。
谷歌搜索后,我应该使用curl --http2.0使其工作,但我的卷曲版本不支持该选项,因为它是在curl 7.33中添加,而我使用curl与版本:curl 7.19.7(x86_64-redhat-linux-gnu)libcurl / 7.19.7 NSS / 3.14.0.0 zlib / 1.2.3 libidn / 1.18 libssh2 / 1.4.2
现在,我应该升级我的卷曲还是有任何其他方式使其得到支持,或者我在请求中遗漏了某些内容(抱歉,但我无法显示请求)。
如果我需要升级它,那么请指定我如何将curl升级到版本7.33.0的方式,我没有得到任何正确的方法。
答案 0 :(得分:14)
对我来说,问题是url
(我在那里有空间)的错误,在此问题之后发现curl
抱怨错误http version
是误报警。
答案 1 :(得分:5)
今天我用Imperva Rest API curl命令得到了同样的错误。
原来我正在使用的网址有一些路径/(包含空格的变量值) http://.../.../some path/or/some thing here/resource/sites
而且它不允许空格 。
要解决此问题,我使用%20替换空格字符(根据Imperva REST API v11.5 doc): http://.../.../some%20path/or/some%20thing%20here/resource/sites
然后它可以正常工作。
答案 2 :(得分:1)
curl默认使用HTTP 1.1(-v和--trace会显示),所以如果不支持,你可能需要使用--http1.0选项切换到HTTP 1.0。
http 2很难在野外使用,只有最近的curl版本支持。
答案 3 :(得分:0)
对我来说,这是在通过一个半编码的" url" to Curl,特别是空格没有编码到"%20",而其他人员编码正确。有人应该通过" url"完全解码或完全编码。
答案 4 :(得分:0)
这是由curl
错误消息引起的混乱。但是,此问题与HTTP版本无关,大多数情况下是curl URL内的空格。例如"adc.com/adc?a=hi there"
,因此要解决此问题,只需按照rfc3986逃逸那些字符,例如"adc.com/adc?a=hi%20there"
。
答案 5 :(得分:0)
我想这或多或少是一条消息,告诉您您的http响应在某种程度上格式不正确或可能是不受支持的http格式。
我今天遇到了同样的问题:我正在等待的服务器应用程序将在其标头中返回不完整的状态消息,例如
HTTP/1.1 500
代替
HTTP/1.1 500 Internal Server Error
和curl会抱怨不支持的HTTP版本。因此,似乎必须填写状态代码之后的消息才能有效的http。很有道理,但该消息有点误导。不一定是关于HTTP版本的,它只是说:根据http版本规范进行验证时格式错误。