Ich habe ein Bild in meinem AWS S3-Bucket gespeichert. Dies ist meine CORS-Konfiguration:Bild gespeichert mit Amazon S3-Bucket, der nicht auf HTML5-Canvas angezeigt wird. Crossorigin Ausgabe
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Auch die Eimer diese Politik hat:
{
"Version": "2012-10-17",
"Id": "Policy1468082822770",
"Statement": [
{
"Sid": "Stmt1468082812651",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::criptolibertad/*"
}
]
}
Dies ist das Bild: https://criptolibertad.s3.amazonaws.com/Django/0_startproject.jpeg, wie Sie sehen können, es ist öffentlich. Ich benutze eine Bibliothek namens Croppie, die versucht, das Bild in eine Leinwand zu laden. Aber die Leinwand zeigt das Bild nicht, ich weiß nicht warum. Die js sieht wie folgt aus:
croppie_div.croppie('bind', {
url: "{{ carta_magicpy.imagen_base.url }}",
points: [10,10,300,600]
});
Das url
Attribut ist nur eine Variable von Django gemacht. Es sieht so aus, wenn es gemacht wird:
<img style="opacity: 0;" src="https://criptolibertad.s3.amazonaws.com/Django/0_startproject.jpeg" crossorigin="anonymous" class="cr-image">
Beachten Sie die crossorigin
Attribut. Ich ging in Croppies Quelle und entfernte dieses Attribut. Aber dann bekomme ich den Fehler:
Image from origin ... has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource
Wie kann ich das lösen?
Die Änderung im Verhalten scheint darauf hinzuweisen, dass die CORS-Konfiguration im Bucket korrekt ist und "crossorigin =" anonymous "" ebenfalls korrekt ist. Das ist sowohl vernünftig als auch verwirrend, da es bedeutet, dass es hätte funktionieren müssen. Haben Sie Tests mit verschiedenen Browsern durchgeführt? –