我正在尝试使用multipart / form-data POST请求上传文件。 同样的请求适用于不同系统上的其他人,但不适用于我的PC。 我收到“RequestTimeout,在超时期限内没有读取或写入到服务器的套接字连接。空闲连接将被关闭”来自s3服务器的错误。
我正在使用ubuntu 16.04和curl发送请求。 还尝试了curl的--data-binary选项,结果相同。
curl -X POST --header "Content-Type:multipart/form-data, boundary=xxxxxxxxxx" --data @x.txt http://some-server.s3.amazonaws.com
x.txt看起来像这样:
--xxxxxxxxxx
Content-Disposition: form-data; name="AWSAccessKeyId"
someaccesskey
--xxxxxxxxxx
Content-Disposition: form-data; name="success_action_status"
200
--xxxxxxxxxx
Content-Disposition: form-data; name="acl"
public-read
--xxxxxxxxxx
Content-Disposition: form-data; name="key"
/somedir/somefilename.png
--xxxxxxxxxx
Content-Disposition: form-data; name="Cache-Control"
no-cache
--xxxxxxxxxx
Content-Disposition: form-data; name="Content-Type"
image/png
--xxxxxxxxxx
Content-Disposition: form-data; name="policy"
somepolicy==
--xxxxxxxxxx
Content-Disposition: form-data; name="signature"
somesignature=
--xxxxxxxxxx
Content-Disposition: form-data; name="file"; filename="somefilename.png"
Content-Type: application/octet-stream
S
--xxxxxxxxxx--
答案 0 :(得分:0)
在Wireshark中查看来自我的计算机的现有数据包后,我发现Windows减少了它尝试发送到亚马逊的数据包的长度,Ubuntu将其设置为MTU 1500,之后将其改为536,数据包通过了。