我试图用POST上传一个文件
我的要求是:

POST /upload.php HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary=---------------------------552335022525
Content-Length: 192
-----------------------------552335022525
Content-Disposition: form-data; name="userfile"; filename="12.txt"
Content-Type: text/plain


blabla
-----------------------------552335022525--

使用HTTP live headers firefox插件一切正常
但是当把它放在char*缓冲区并用winsocksapi发送它时,我得到400个错误的请求错误

最佳答案

在头和有效负载之间需要一个空行。

Content-Length: 192

-----------------------------552335022525

这是HTTP协议的一部分。HTTP请求头以第一个空行结尾(CR-LF本身)。您发送的内容将导致字符串
-----------------------------552335022525

作为一个请求头(当然,不是这样的)被接受(以及下面的两行代码)。服务器不能对它做头或尾,所以它用400个错误的请求来响应。
此外,对于多部分/表单数据,发送内容长度是不必要的,甚至不是一个好主意,因为错误的值可能会造成问题。MIME多部分格式是自描述的。

10-04 21:15