我有一个坐在Amazon S3中的SVG文件和一个指向我的存储桶作为原点的Cloud Front分配。使用AJAX从CloudFront加载文件导致403(禁止)错误
我已经启用CORS在斗象下面这样:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
我还白下面列出头在我的云锋分配行为的选项。
Access-Control-Request-Headers
Access-Control-Request-Method
Origin
在单个独立的HTML文件,我很容易加载像SVG:当我为此在独立的HTML
$(document).ready(function() {
var settings = {
"crossDomain": true,
"url": "https://mycloudfront.cloudfront.net/images/one-TEST_1140924280.svg",
"method": "GET"
};
$.ajax(settings).done(function (response) {
var svg = document.importNode(response.documentElement,true);
$("#svg").append(svg);
});
});
,请求头的来源是空。 但是当我尝试这样做在我的项目(春季启动1.5.3)请求头的由来是http://localhost:8080,我得到403响应的结果:
的XMLHttpRequest无法加载https://mycloudfront.cloudfront.net/images/one-TEST_1140924280.svg。对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。因此'Origin'http://localhost:8080'不允许访问。响应有HTTP状态代码403
另外,有被添加一个报头添加到AJAX请求访问控制请求报头:X-CSRF令牌
完全相同的事情发生在我的EC2测试环境中。我认为localhost:8080来源是某种程度上的问题。
我是否在CloudFront或S3的某个位置缺少配置?
您是否设置了存储桶策略? –
@TomNijs不,它是空的。 – Milad