【发布时间】:2019-08-05 02:12:52
【问题描述】:
我需要从 S3 中检索一些可公开访问的文件。
这是我的 S3 CORS 配置:
<?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>
这是我的 JS 代码:
const response = await fetch(url, {
mode: 'cors',
});
const blob = await response.blob();
它有效,但并非总是如此。有时我在控制台中会出现以下错误:
从源“https://my.host”访问“https://my-bycketuel/file.jpg”处的 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。
但是在我重新加载页面后(有时是几次,有时只是一次),错误就消失了,我可以读取响应对象。
【问题讨论】:
-
您需要在 {my.host} 上将 {my-bycketuel / *} 列入白名单。这样问题就会永远为你解决。这是跨平台访问问题。应该很容易。
-
另一种推荐的方法是您可以使用反向代理来解决问题。
标签: javascript ajax amazon-web-services amazon-s3 cors