HTTP POST mutli part “BAD REQUEST”

2019-08-09 23:33发布

I'm trying to upload a file using POST

here's my request :

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--

Using HTTP live headers firefox plugin everything works

but when putting it a char *buffer and send it with winsocksapi I get 400 Bad Request error

1条回答
▲ chillily
2楼-- · 2019-08-10 00:13

You need a blank line between the headers and the payload.

Content-Length: 192

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

This is part of the HTTP protocol. HTTP request headers end with the first empty line (CR-LF by itself.) What you are sending is resulting in the string

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

being taken (along with the following two lines) as a request header which, of course, it isn't. The server can't make head or tail of that, so it responds with 400 Bad Request.

Also, sending the Content-length is not necessary with multipart/form-data, nor even a good idea, as the wrong value could create problems. The MIME multipart format is self describing.

查看更多
登录 后发表回答