我正在使用 java 为存储在 s3 中的图像生成预签名 url
public String generateDownloadLink(String bucketName, String responseContentDisposition,
String key, int days) {
GetObjectRequest objectRequest =
GetObjectRequest.builder()
.bucket(bucketName)
.responseContentDisposition(responseContentDisposition)
.key(key).build();
GetObjectPresignRequest preSignRequest =
GetObjectPresignRequest.builder()
.signatureDuration(Duration.ofDays(days))
.getObjectRequest(objectRequest)
.build();
PresignedGetObjectRequest presignedRequest = this.s3Presigner.presignGetObject(preSignRequest);
return presignedRequest.url().toString();
Run Code Online (Sandbox Code Playgroud)
然后,FE(反应)使用图像标签加载图像,如下图所示。当全屏打开时,该模态库a还有一个下载按钮 ->标签元素。如果按下下载按钮,由于 CORS 错误,它不会下载任何内容。
这篇文章解释了原因,尽管该解决方案不适用于我的情况。
另外,这种情况会间歇性地发生,我无法弄清楚这些情况下有什么不同。有时我可以看到缩略图(又名库执行初始 GET 来加载图像并显示它),并且在打开模式后,我可以下载图像(又名库使用标签执行另一个获取a)。
存储桶 CORS 配置
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"GET",
"HEAD"
],
"AllowedOrigins": [
"http://localhost:3000",
"https://<my-host>"
],
"ExposeHeaders": [
"ETag"
],
"MaxAgeSeconds": 3000
}
Run Code Online (Sandbox Code Playgroud)
编辑:我无法添加, …