amazon-s3 - example - no ''access-control-allow-origin'' header is present on the requested resource
S3 no devuelve los encabezados de Access-Control-Allow-Origin? (2)
En primer lugar, asegúrese de un encabezado de Origin
con cada solicitud. Si no se envía el encabezado Origin
, S3 no enviará encabezados de access-control
, ya que S3 los considera irrelevantes (y típicamente lo son). Un navegador (al que se refiere el mecanismo CORS) enviará automáticamente un encabezado Origin
al realizar solicitudes HTTP de origen cruzado a través de XMLHTTPRequest.
En caso de cargar imágenes con img
, debe agregar el crossorigin="anonymous"
. Consulte la documentación de MDN en el atributo crossorigin . Esto hará que el navegador envíe un encabezado de solicitud de Origin
como lo hace con XMLHTTPRequest.
Siguiendo la respuesta de Sam Selikoff, es posible que deba cambiar
<AllowedOrigin>http://*</AllowedOrigin>
a
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
No he probado esto.
Siguiendo el comentario de Paul Draper sobre esta respuesta: Cuidado con los problemas de almacenamiento en caché. Un navegador puede usar una respuesta en caché que no incluyó los encabezados de respuesta de Access-Control
apropiados. Durante el desarrollo, puede borrar su caché. En producción, debe cambiar a una nueva URL para el recurso, si anteriormente se utilizó de manera estática.
Tengo problemas para obligar a S3 a establecer encabezados CORS en todos los objetos que devuelve de un depósito, aunque CORS está habilitado, ya que las cargas S3 del lado del cliente están funcionando, ¡los objetos devueltos no tienen encabezados CORS!
La política que he habilitado es:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Un ejemplo de objeto URL https://s3.amazonaws.com/captionable/meme/test
¿Alguien sabe lo que está mal?
También encontré esto con una etiqueta <image>
, y después de seguir la respuesta de Myrne Stol agregué la etiqueta crossorigin=anonymous
a mi etiqueta de imagen. Verifiqué que el encabezado de Origin
se estaba enviando a S3, pero aún así, el encabezado Access-Control-Allow-Origin
no se enviaba en respuesta.
Me encontré con esta respuesta SO y lo resolvió. Cambié el AllowedOrigin
en mi configuración de S3 a esto:
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
y ahora S3 responde con los encabezados de acceso. ¡Hurra!