提问人:David Refoua 提问时间:9/5/2017 最后编辑:David Refoua 更新时间:8/23/2023 访问量:10210
“multipart/form-data”HTTP 请求中的“utf-8”字符集会更改什么?
What does `utf-8` charset change in a `multipart/form-data` HTTP request?
问:
在尝试将二进制文件上传到 Web 服务器时,我观察到通过将标头设置为带有 present 的值,POST 请求数据完整性会失败。Content-Type
charset="utf-8"
Chrome 似乎在同时执行文件上传 POST 请求时省略了标题和正文中的所有属性。charset
但是,如果包含该属性,则某些 Web 服务器会正确满足请求。charset="utf-8"
工作示例:
POST /upload.php HTTP/1.1
Content-Type: multipart/form-data; boundary=----FormBoundary
------FormBoundary
Content-Disposition: form-data; name="fileupload"; filename="data.bin"
Content-Type: application/octet-stream
------FormBoundary--
HTTP/1.1 200 OK
The file was received successfully.
失败示例:
POST /upload.php HTTP/1.1
Content-type: multipart/form-data; charset="utf-8"; boundary=----FormBoundary
------FormBoundary
Content-Disposition: form-data; name="fileupload"; filename="data.bin"
Content-Type: application/octet-stream
------FormBoundary--
HTTP/1.1 200 OK
The uploaded file seems to be broken.
添加似乎使某些 Web 服务器无法正确解码上传的数据,而它似乎不会影响其他 Web 服务器中的进程。charset="utf-8"
请注意,在这两种情况下,包括类型后面的字符集不会影响任何事情,我更关注类型后面的添加。application/octet-stream
multipart/form-data
当 Unicode 字符集标志出现在 multipart 类型之后时,服务器中会发生什么情况?
答: 暂无答案
评论
multipart/form-data
_charset_
<form>
accept-charset