目前正在尝试创建一个简单的文件上传应用程序,我使用 S3 作为存储并使用 presigned-url 从客户端进行上传。
该应用程序是使用 SvelteKit 构建的,并使用 Fetch 进行上传。
const duplex = { duplex: 'half' };
const response = await fetch(url, {
method: 'POST',
body: file.stream(),
headers: {
'Content-Type': file.type
},
signal: this.abortController?.signal,
...duplex
});
在 Firefox 中运行应用程序时,它会正常上传,当尝试在 chrome 上运行它时,它会因 Quic/Http/2 错误而中断
net::ERR_H2_OR_QUIC_REQUIRED
两者都通过 Http 在本地主机上运行。我假设 chrome 有一些额外的保护措施,可以防止通过非 SSL 通道运行此类上传,因此我尝试部署该应用程序并通过 HTTPS 运行它,但它仍然可以在 Firefox 上运行,而不能在 chrome 上运行。
就这么简单,使用 HTTPS url 而不是 HTTP url。