我正在编写一个简单的HTTP服务器,它将接受主要来自cURL的PUT请求作为客户端,并且我在处理Expect: 100-continue标头时遇到了一些问题.
据我了解,服务器应该读取标头,HTTP/1.1 100 Continue在连接上发回响应,读取流到值Content-Length,然后发回真实的响应代码(通常HTTP/1.1 200 OK但任何其他有效的HTTP应答都应该这样做).
嗯,这正是我的服务器所做的.问题是,显然,如果我发送100 Continue答案,cURL无法报告任何后续的HTTP错误代码并假定上传成功.例如,如果由于内容的性质而导致上传被拒绝(存在基本数据检查),我希望调用客户端检测问题并采取相应措施.
我错过了一些明显的东西吗
编辑:这是来自cURL的示例输出,其中包含一个包含错误的辅助标头:
> PUT /test1%2Epdf HTTP/1.1
> Authorization: Basic xxxx
> User-Agent: curl/7.20.0 (i386-pc-win32) libcurl/7.20.0 OpenSSL/0.9.8l zlib/1.2.3
> Host: localhost
> Accept: */*
> Content-Length: 24
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 415 Unsupported Media Type
< Connection: close
< Content-Type: text/xml
< Content-Length: 289
<
Run Code Online (Sandbox Code Playgroud)