1

我正在尝试使用 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 *buffer 并使用 winsocksapi 发送时,我收到 400 Bad Request 错误

4

1 回答 1

1

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

Content-Length: 192

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

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

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

被(连同以下两行)作为请求标头,当然,它不是。服务器无法对此做出决定,因此它以 400 Bad Request 响应。

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

于 2013-01-02T03:51:52.083 回答