Mon application stocke les images sur S3, puis les transmet par proxy via Cloudfront. Je suis impatient d'utiliser la nouvelle prise en charge CORS de S3 pour pouvoir utiliser les méthodes de canevas HTML5 (qui ont une politique d'origine croisée), mais je n'arrive pas à configurer correctement mon S3 et mon Cloudfront. Je rencontre toujours le problème "Uncaught Error : SECURITY_ERR : DOM Exception 18" lorsque j'essaie de convertir une image en élément canvas.
Voici ce que j'ai pour l'instant :
S3
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>MY_WEBSITE_URL</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>MY_CLOUDFRONT_URL</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Cloudfront
Origines
Origin Protocol Policy: Match Viewer
HTTP Port: 80
HTTPS Port: 443
Comportements
Origin: MY_WEBSITE_URL
Object Caching: Use Origin Cache Headers
Forward Cookies: None
Forward Query Strings: Yes
Il y a quelque chose qui m'échappe ?
UPDATE : Je viens d'essayer de changer les en-têtes en
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
sur la base de cette question Amazon S3 CORS (Cross-Origin Resource Sharing) et le chargement de polices inter-domaines de Firefox
Toujours rien.
MISE À JOUR : PLUS D'INFORMATIONS SUR DEMANDE
Request
URL:https://d1r5nr1emc2xy5.cloudfront.net/uploaded/BAhbBlsHOgZmSSImMjAxMi8wOS8xMC8xOC81NC80Mi85NC9ncmFzczMuanBnBjoGRVQ/32c0cee8
Request Method:GET
Status Code:200 OK (from cache)
UPDATE
Je pense que ma requête n'était peut-être pas correcte, j'ai donc essayé d'activer CORS avec
img.crossOrigin = '';
mais ensuite l'image ne se charge pas et je reçois l'erreur : Le chargement d'une image d'origine croisée est refusé par la politique de partage des ressources d'origine croisée.