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

Meh*_*kar 6 linux command-line curl http 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的方式,我没有得到任何正确的方法来做到这一点.

oak*_*oak 14

对我来说,这个问题是错误的url(我有空间)在这个问题之后,事实证明curl抱怨坏http version是误报.

  • 我遇到了完全相同的问题 - URL 中有一个空格。我只需要记住(与浏览器不同)curl 在 HTTP 请求中逐字传递 URL。用 `%20` 替换空格并对其他特殊字符进行编码.. js 函数 `encodeURI()` 和 `encodeURIComponent()` 在这里可能会有所帮助(其他语言中的许多实现也是如此) (4认同)

Aru*_*gal 6

今天我用Imperva Rest API curl命令得到了同样的错误.

原来我正在使用的URL有一些路径/(变量中包含空格的值)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然后它起作用了.


Dan*_*erg 1

curl 默认使用 HTTP 1.1(-v 和 --trace 将向您显示),因此如果不支持,您可能需要使用 --http1.0 选项切换到 HTTP 1.0。

http 2 还几乎没有被服务器广泛使用,并且只有最近的curl 版本才支持。