【发布时间】:2021-10-27 08:58:31
【问题描述】:
我在 VueJS 应用程序中有以下方法:
const downloadImageBase64 = async imageUrl => {
try {
var result = await axios({
method: "get",
url: imageUrl,
responseType: 'blob',
crossdomain: true
});
return blobToBase64(result.data);
}
catch (err) {
console.log("err: ", err);
return "";
}
};
我正在下载图像并将它们作为 base64 字符串返回,因为我将它们嵌入到使用 JSPDF 创建的 PDF 中。图像本身托管在 AWS S3 中。我在适当的 S3 存储桶中设置了 CORS 策略:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"https://mydomain.co.za"
"http://localhost:8082"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
在我的本地主机上运行应用程序时,FireFox 和 Chrome 都可以成功下载图像:
但是,当我将应用部署到临时环境时,下载开始因 CORS 问题而失败,但仅限于 Chrome。查看请求标头,甚至没有发送 CORS 信息:
我不知道是否存在 Chrome 未在网络流量中显示的预检,但控制台给了我以下错误:
从源“https://mydomain.co.za”访问“https://my-bucket.s3-eu-west-1.amazonaws.com/my-image-path.png”的 XMLHttpRequest已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。
【问题讨论】: