Ich habe eine SVG-Datei in Amazon S3 und eine Cloud Front-Verteilung, die auf meine Bucket als Ursprung zeigt.Laden der Datei von CloudFront mit AJAX verursacht 403 (Forbidden) Fehler
Ich habe CORS auf dem heißen Stein, wie unten aktiviert:
<?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>
Ich weiß auch unter Überschriften in den Optionen des Verhaltens meiner Wolkenfront Verteilung aufgeführt.
Access-Control-Request-Headers
Access-Control-Request-Method
Origin
In einer einzigen eigenständigen HTML-Datei, ich habe die SVG leicht wie laden:
$(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);
});
});
Wenn ich dies im Standalone-HTML zu tun, ist der Ursprung des Request-Header null. Aber wenn ich versuche, dies in meinem Projekt zu tun (Frühjahr Boot-1.5.3) Der Ursprung des Request-Header ist http://localhost:8080 und ich bekomme 403 Antwort als Ergebnis:
XMLHttpRequest https://mycloudfront.cloudfront.net/images/one-TEST_1140924280.svg nicht geladen werden kann. Die Antwort auf die Preflight-Anforderung besteht keine Prüfung der Zugriffssteuerung: Auf der angeforderten Ressource ist kein Header "Access-Control-Allow-Origin" vorhanden. Ursprung 'http://localhost:8080' ist daher nicht erlaubt. Die Antwort hatte HTTP-Statuscode 403.
Außerdem gibt es einen Header auf die Anfrage AJAX hinzugefügt werden Access-Control-Anfrage-Header: x-CSRF-Token
Genau das gleiche geschieht in meiner Testumgebung auf EC2. Ich dachte localhost: 8080 im Ursprung ist irgendwie das Problem.
Fehle ich irgendwo in CloudFront oder S3 eine Konfiguration?
Haben Sie eine Bucket-Richtlinie festgelegt? –
@TomNijs Nein, es ist leer. – Milad