HTTP POST mutli part“BAD REQUEST”

时间:2012-12-27 14:11:23

标签: c http-headers http-post winsock

我正在尝试使用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 header firefox插件一切正常

但是当把它放在char *缓冲区并使用winsocksapi发送时,我得到400 Bad Request错误

1 个答案:

答案 0 :(得分:1)

标题和有效负载之间需要一个空行。

Content-Length: 192

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

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

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

被采取(以及以下两行)作为请求标题,当然,它不是。服务器不能使用它的头部或尾部,因此它会响应400 Bad Request。

此外,使用multipart / form-data不需要发送Content-length,甚至也不是一个好主意,因为错误的值可能会产生问题。 MIME多部分格式是自我描述的。