google-chrome - 使用 HTTPS 从 chrome 从 S3 下载图像时出现 CORS 错误,但在 Firefox 中同样有效
问题描述
我正在尝试从具有以下设置的 S3 下载 .jpg 和 .pdf 图像
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
遵循类似于 - (如何使用 Angular2 下载文件)的方法,在 Firefox 中一切正常。在 chrome 中,PDF 下载工作完美,但是当我尝试下载图像时,总是收到 GET 请求的典型 CORS 错误。
downloadFile(url, type, fileName) {
this.http.getFile(url, { responseType: 'blob' }).
subscribe(data => this.downloadFileComplete(data, type, fileName));
}
downloadFileComplete(data: any, type: string, fileName: string) {
let fileType = (type === 'IMAGE') ? 'image/jpeg' : 'application/pdf';
var blob = new Blob([data], { type: fileType.toString() });
if (type === 'IMAGE') {
saveAs(blob, fileName + ".jpg");
}
else {
saveAs(blob, fileName + ".pdf");
}
}
在' https://xxxxxxxxxxxxxx.s3.ap-south-1.amazonaws.com/certifications/3c35754f-b3c4-42f2-953a-8af52b5ed19bf2bc5370-9481-492a-8174-dfcc63d5a9bd.jpg '从源http访问 XMLHttpRequest : //localhost:4200 '已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。
经过一些研究,我发现了这个解决方法(https://zyst.io/how-to-fix-aws-s3-chrome-and-safari-cors-on-images),他们建议对 S3 使用 HTTP URL . 当我尝试这个时,图像下载再次开始工作。有人可以向我解释
为什么获取图像的 GET 调用会在 Chrome 中引发图像而不是 PDF 的 CORS 错误?
这个问题有合适的解决方案吗?我的网站在 HTTPS 上运行,因此基于 HTTP 的解决方案并不好。
解决方案
推荐阅读
- mysql - 在 Django 中的两个字段上指定 UniqueConstraint 是否很昂贵?
- python - 在 10*10 矩阵中生成随机字母
- javascript - 如何使用 onchange 更改使用 jquery 显示(显示/隐藏)的列表?
- multithreading - 将变量的引用发送到线程 C++
- python - Selenium 单击下一步按钮会产生 selenium.common.exceptions.ElementClickInterceptedException
- python - 初学python3关于elif语句语法和print_function使用的问题
- python - 在嵌入式绘图图表上启用滚轮缩放
- r - 无法在 WSL 2 中运行的 Ubuntu 20.04 上安装 R
- typescript - 打字稿使用编译器选项“--downlevelIteration”以允许在尝试传播时迭代迭代器错误
- saxon - 使用 saxon & XPath 3.1 解析 JSON 文件