Dav*_*oua 6 post encoding file-upload http utf-8
为了尝试将二进制文件上传到Web服务器,我观察到通过将Content-Type标头设置为charset="utf-8"存在的值,POST请求数据完整性失败.
charset在执行文件上传POST请求时,Chrome似乎省略了标题和正文中的所有属性.
但是,如果charset="utf-8"包含该属性,某些Web服务器会正确满足请求.
工作实例:
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.
Run Code Online (Sandbox Code Playgroud)
失败的例子:
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.
Run Code Online (Sandbox Code Playgroud)
添加charset="utf-8"似乎使一些Web服务器无法正确解码上传的数据,而它似乎不会影响其他Web服务器中的进程.
请注意,在这两种情况下,包括application/octet-stream类型后的字符集都不会影响任何东西,我更关注multipart/form-data类型之后的添加.
在multipart类型之后出现unicode charset标志时,服务器和/或操作系统会发生什么?