卷曲响应说“不支持HTTP版本”,错误505

时间:2013-11-21 06:42:46

标签: linux http curl command-line version

我使用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的方式,我没有得到任何正确的方法。

6 个答案:

答案 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选项切换到H​​TTP 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版本规范进行验证时格式错误。