S3 - Encabezado de acceso-control-permitir-origen

187

¿Alguien logró agregar Access-Control-Allow-Origina los encabezados de respuesta? Lo que necesito es algo como esto:

<img src="http://360assets.s3.amazonaws.com/tours/8b16734d-336c-48c7-95c4-3a93fa023a57/1_AU_COM_180212_Areitbahn_Hahnkoplift_Bergstation.tiles/l2_f_0101.jpg" />

Esta solicitud de obtención debe contener en la respuesta, encabezado, Access-Control-Allow-Origin: *

Mi configuración CORS para el cubo se ve así:

<?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>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Como es de esperar, no hay Originencabezado de respuesta.

Wowzaaa
fuente
44
Posible duplicado de stackoverflow.com/questions/17570100/…
Kevin Borders
1
Una cosa que falta de esto es: <ExposeHeader> Access-Control-Allow-Origin </ExposeHeader>
Dimitry

Respuestas:

198

Por lo general, todo lo que necesita hacer es "Agregar configuración CORS" en las propiedades de su depósito.

amazon-screen-shot

El <CORSConfiguration>viene con algunos valores predeterminados. Eso es todo lo que necesitaba para resolver tu problema. Simplemente haga clic en "Guardar" e intente nuevamente para ver si funcionó. Si no es así, también puede probar el siguiente código (de alxrb answer) que parece haber funcionado para la mayoría de las personas.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration> 

Para obtener más información, puede leer este artículo sobre Edición de permisos de depósito .

Flavio Wuensche
fuente
44
Parece posible Intente leer el enlace de arriba (en la respuesta) o vaya directamente a este: docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTcors.html
Flavio
77
Gracias. Simplemente haciendo clic en Guardar en esto permitió que mis fuentes se cargaran.
Tania Rascia
2
Me doy cuenta de que funciona a veces y otras veces me sale el error del navegador después de editar esto. No estoy seguro si es CloudFlare o el S3.
Mark
44
Es posible que deba agregar HEADa AllowedMethods
jordanstephens
32
No funciona para mi Todavía no hay encabezado 'Access-Control-Allow-Origin' en la respuesta de las solicitudes HEAD o GET.
carpiediem
104

Estaba teniendo un problema similar con la carga de fuentes web, cuando hice clic en 'agregar configuración CORS', en las propiedades del depósito, este código ya estaba allí:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration> 

Acabo de hacer clic en Guardar y funcionó de maravilla, mis fuentes web personalizadas se cargaban en IE y Firefox. No soy un experto en esto, solo pensé que esto podría ayudarte.

alxrb
fuente
12
¡Gracias! Esto lo hizo por mi. Llegué a hacer clic en 'agregar configuración CORS', pero no me di cuenta de que tenía que hacer clic en 'guardar' porque pensé que estaba mirando la configuración predeterminada. D'oh
Jack Cushman
35
Tuve que configurarlo <AllowedHeader>*</AllowedHeader>para que funcione (es mejor hacer una nueva regla para su sitio solo al hacer esto)
Parlamento
44
@parliament tenía la magia allí, ya que todas las demás configuraciones anteriores no funcionaron hasta que <AllowedHeader> se estableció en un comodín. Hurra.
Neal Magee
Fui a la configuración de CORS y encontré la misma configuración allí, pero <AllowedOrigin> * </AllowedOrigin> se activó cuando llegué a guardar. No fue antes.
dvdmn
1
Eso fue todo, haga clic en Guardar
lapinkoira
48

Si su solicitud no especifica un Originencabezado, S3 no incluirá los encabezados CORS en la respuesta. Esto realmente me arrojó porque seguía tratando de rizar los archivos para probar el CORS pero curl no lo incluía Origin.

eremzeit
fuente
2
Estuve buscando en Internet desde hace 2 semanas, todos los artículos y respuestas hablaban sobre cambiar las configuraciones de S3 CORS que hice como dijeron pero no hubo cambios en la respuesta, hasta que vi que tu respuesta tenía sentido para mí, la probé usando cartero y su trabajo! así que muchas gracias
Abdallah Awwad Alkhwaldah
1
¿Alguien sabe cómo puedo cambiar los encabezados de una imgetiqueta? No puedo enviar diferentes encabezados, el navegador envía la solicitud
idan
1
OMG, ¿está documentado en alguna parte?
Darkowic
2
Es :) docs.aws.amazon.com/AmazonS3/latest/dev/… > Verifique que la solicitud tenga el encabezado Origen. Si falta el encabezado, Amazon S3 no trata la solicitud como una solicitud de origen cruzado, y no envía encabezados de respuesta CORS en la respuesta.
Darkowic
46

@jordanstephens dijo esto en un comentario, pero se pierde y fue una solución muy fácil para mí.

Simplemente agregué el método HEAD e hice clic en guardado y comenzó a funcionar.

<CORSConfiguration>
	<CORSRule>
		<AllowedOrigin>*</AllowedOrigin>
		<AllowedMethod>GET</AllowedMethod>
		<AllowedMethod>HEAD</AllowedMethod> <!-- Add this -->
		<MaxAgeSeconds>3000</MaxAgeSeconds>
		<AllowedHeader>Authorization</AllowedHeader>
	</CORSRule>
</CORSConfiguration>

Senica Gonzalez
fuente
3
Esto funciona a partir del 17 de enero de 2018, la respuesta aceptada es una vergüenza. lol
lasec0203
44
Sí. Esto corrige el error "Sin encabezado 'Access-Control-Allow-Origin'" en Chrome al OBTENER cosas como fuentes de AWS S3.
Nostalg.io
1
¡Si! Muchas gracias. Permitir HEADmétodo hizo el truco.
Zac
37

Esta es una manera simple de hacer que esto funcione.

Sé que esta es una vieja pregunta, pero aún es difícil encontrar una solución.

Para empezar, esto funcionó para mí en un proyecto construido con Rails 4, Paperclip 4, CamanJS, Heroku y AWS S3.


Tienes que solicitar tu imagen usando el crossorigin: "anonymous"parámetro.

    <img href="your-remote-image.jpg" crossorigin="anonymous"> 

Agregue la URL de su sitio a CORS en AWS S3. Aquí hay una referencia de Amazon sobre eso. Bastante, solo vaya a su bucket, y luego seleccione " Propiedades " de las pestañas a la derecha, abra la pestaña " Permisos " y luego, haga clic en " Editar configuración CORS ".

Originalmente, me había < AllowedOrigin>puesto a *. Simplemente cambie ese asterisco a su URL, asegúrese de incluir opciones como http://y https://en líneas separadas. Esperaba que el asterisco aceptara "Todos", pero aparentemente tenemos que ser más específicos que eso.

Así es como me parece.

ingrese la descripción de la imagen aquí

Horacio
fuente
1
a diferencia de la respuesta aceptada, ¡esto realmente funciona! Incluso ClaudFront CDN cargando este S3 está replicando estos encabezados. Gracias amigo ¡Me salvó un par de horas!
equivalente8
55
Si está utilizando CloudFront, es posible que también desee ver esto: blog.celingest.com/en/2014/10/02/…
Kunal
1
Gracias al enlace de @ Kunal. CloudFront agrega una capa de complejidad a esta ecuación.
Tyler Collier
1
Había llegado tan lejos como los documentos de MDN <img>, pero solo puse crossOrigin="true"por error. ¡GRACIAS!
Cezille07
¡Wow, esto realmente me sirvió! Puedo usarlo en localhost e incluso puedo usar el asterisco, la clave era simplemente agregar crossorigin = "anónimo" a mi elemento html: D
Alexander
23

Ver las respuestas anteriores. (pero también tuve un error de Chrome)

No cargue y muestre la imagen en la página en CROMO. (si luego va a crear una nueva instancia)

En mi caso, cargué imágenes y las mostré en la página. Cuando se hizo clic en ellos, creé una nueva instancia de ellos:

// there is already an html <img /> on the page, I'm creating a new one now
img = $('<img crossorigin />')[0]
img.onload = function(){
  context.drawImage(img, 0, 0)
  context.getImageData(0,0,w,h)
}
img.src = 'http://s3.amazonaws.com/my/image.png'; // I added arbitrary ?crossorigin to change the URL of this to fix it

Chrome ya había almacenado en caché otra versión y NUNCA intentó volver a buscar la crossoriginversión (incluso si estaba usando crossoriginlas imágenes mostradas.

Para solucionarlo, agregué ?crossoriginal final de la url de la imagen (pero podría agregar ?blah, es arbitrario cambiar el estado de la caché) cuando lo cargué para el lienzo. Avíseme si encuentra una mejor solución para CHROME

Funkodebat
fuente
55
El almacenamiento en caché también resultó ser mi problema (después de haber probado las respuestas aceptadas). Gracias por esto.
FearMediocrity
También tuve el problema de caché en Chrome. Solución fácil: Herramientas / Configuración> Borrar datos de navegación ...> Imágenes y archivos en caché, aunque puede ser necesaria otra solución para los usuarios que puedan enfrentar este problema.
StevieP
1
Gracias por esta respuesta! Tuve el mismo problema con Chrome y no encontré respuesta.
Wandrille
1
¡Todas las personas deben probar esto si tienen problemas con CORS! ¡Salva mi día!
Sangar82
23

Solo agregaré a esta respuesta, arriba, que resolvió mi problema.

Para configurar AWS / CloudFront Distribution Point para desviar el encabezado CORS Origin, haga clic en la interfaz de edición para el punto de distribución:

ingrese la descripción de la imagen aquí

Vaya a la pestaña de comportamientos y edite el comportamiento, cambiando "Caché basado en encabezados de solicitud seleccionados" de Ninguno a Lista blanca, luego asegúrese de Originagregarlo al cuadro de la lista blanca. Consulte Configuración de CloudFront para respetar la configuración de CORS en los documentos de AWS para obtener más información.

ingrese la descripción de la imagen aquí

MikeiLL
fuente
¿Qué métodos HTTP permitidos debe establecer?
Estudiante
¿Te refieres a GET, POST, DELETE, etc ...? ¿Dónde están los que se solicitan?
MikeiLL
¿Puede reformular su pregunta por favor para que pueda entender si se está refiriendo al formulario web cf oa la aplicación que solicita el recurso s3? Si es lo primero, hay una opción de métodos HTTP que se menciona en los documentos aquí docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/…
Estudiante
Parece que estaba preguntando qué HTTP Request Methodsdebe establecerse dentro de AWS. Y a esa pregunta, no veo que deba establecerse en ningún lado. Si está hablando dentro de la aplicación que solicita el recurso, creo que simplemente solicitará el archivo por url string: es decir, un archivo de imagen, video o audio.
MikeiLL
Esa fue la pieza que faltaba! ¡gracias! Probé todas las respuestas anteriores y solo después de incluir en la lista blanca estos encabezados, funcionó para mí en localhost
Omer Leshem
11

Estaba teniendo problemas similares al cargar modelos 3D desde S3 en un visor 3D de JavaScript (3D HOP), pero curiosamente solo con ciertos tipos de archivos (.nxs).

Lo que me solucionó fue cambiar AllowedHeaderde la configuración predeterminada Authorizationa *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>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
vengativo
fuente
3
Debía establecerse <AllowedHeader>*</AllowedHeader>así con un asterisco para Chrome en octubre de 2017. ¡Muchas gracias! (Además, no olvide borrar la memoria caché del navegador después de la configuración).
Nostalg.io
Pequeño punto: no creo que necesites cambiar el AllowedHeader. También estaba teniendo el mismo problema aquí, pero resultó que era el navegador que almacenaba en caché la respuesta anterior ( MaxAgeSeconds). En la configuración de DevTools, puede ignorar el caché mientras la consola está abierta. Una vez hecho esto, comenzó a funcionar para mí
divillysausages
AllowHeader> * <definitivamente solucionó este problema para mí. ¿Solo puede aplicarse cuando la solicitud se envía a través de una biblioteca xhr particular? Estoy usando Axios y lo encontré necesario.
Jeremy
6

Al igual que otros tienen estados, primero debe tener la configuración CORS en su bucket S3:

<CORSConfiguration>
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod> <!-- Add this -->
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

Pero en mi caso después de hacer eso, todavía no funcionaba. Estaba usando Chrome (probablemente el mismo problema con otros navegadores).

El problema era que Chrome estaba almacenando en caché la imagen con los encabezados (sin contener los datos CORS) , por lo que no importaba lo que intentara cambiar en AWS, no vería mis encabezados CORS.

Después de borrar el caché de Chrome y volver a cargar la página , la imagen tenía los encabezados CORS esperados

Tonio
fuente
1
¡Gracias! Este problema de almacenamiento en caché me estaba volviendo loco. Para cualquiera que se pregunte cómo borrar el caché fácilmente en Chrome (versión 73), haga clic con el botón derecho en el botón de recarga y seleccione 'Vaciar caché y recargar duro'. Luego verás el efecto de cualquier cambio que hayas realizado en tu S3 CORS en menos de 5 segundos. (Tal vez más rápido, eso es cuánto tiempo me lleva cambiar las pestañas del navegador)
Thund
1
Este fue mi problema. Mi cubo tenía la configuración CORS adecuada, mi navegador simplemente era maravillosamente eficiente 🤪Gracias.
Daniel Brady
5

Intenté todas las respuestas anteriores y nada funcionó. En realidad, necesitamos 3 pasos de las respuestas anteriores juntas para que funcione:

  1. Como lo sugirió Flavio; agregue la configuración CORS en su cubo:

    <CORSConfiguration>
       <CORSRule>
         <AllowedOrigin>*</AllowedOrigin>
         <AllowedMethod>GET</AllowedMethod>
       </CORSRule>
     </CORSConfiguration>
    
  2. En la imagen; mencionar crossorigin:

    <img href="abc.jpg" crossorigin="anonymous">
    
  3. ¿Estás usando un CDN? Si todo funciona bien conectándose al servidor de origen pero NO a través de CDN; significa que necesita alguna configuración en su CDN como aceptar encabezados CORS. La configuración exacta depende de qué CDN esté utilizando.

Deepak Singhal
fuente
Gracias, la parte CDN es muy importante, ¿podría agregar detalles de lo que se necesita a nivel CDN?
svelandiag
5

Llegué a este hilo, y ninguna de las soluciones anteriores resultó aplicarse a mi caso. Resulta que simplemente tuve que eliminar una barra diagonal de la <AllowedOrigin>URL en la configuración CORS de mi bucket.

Falla:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://www.mywebsite.com/</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Gana:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://www.mywebsite.com</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Espero que esto le ahorre a alguien algunos tirones de cabello.

Charney Kaye
fuente
3
  1. Establezca la configuración de CORS en la configuración de permisos para su depósito S3

    <?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>
            <AllowedHeader>Authorization</AllowedHeader>
        </CORSRule>
    </CORSConfiguration> 
    
  2. S3 agrega encabezados CORS solo cuando la solicitud http tiene el Originencabezado.

  3. CloudFront no reenvía el Originencabezado de forma predeterminada

    Debe incluir el Originencabezado de la lista blanca en la configuración de comportamiento para su distribución de CloudFront.

Pawel Furmaniak
fuente
2

Lo arreglé escribiendo lo siguiente:

<?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>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

¿Por qué <AllowedHeader>*</AllowedHeader>funciona y <AllowedHeader>Authorization</AllowedHeader>no?

Pablo García Miranda
fuente
1

La "respuesta" de fwuensche es correcta para configurar una CDN; haciendo esto, eliminé MaxAgeSeconds.

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
Mich. Gio.
fuente
1

En la última consola de administración S3, cuando hace clic en la configuración CORS en la pestaña Permisos, mostrará una configuración CORS de muestra predeterminada. Sin embargo, esta configuración no está realmente activa. Primero debe hacer clic en guardar para activar CORS.

Me tomó demasiado tiempo darme cuenta, espero que esto ahorre algo de tiempo a alguien.

hackel
fuente
1

Esta configuración resolvió el problema para mí:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <ExposeHeader>ETag</ExposeHeader>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
DIWAKAR
fuente
Veo muy poca diferencia entre esta configuración y las configuraciones de muchas otras respuestas en esta pregunta. ¿Se intentó utilizar las configuraciones de respuestas anteriores antes de publicar esta configuración?
entpnerd
1

Advertencia - Hack.

Si usa S3Image para mostrar una imagen y luego intenta obtenerla a través de fetch, tal vez para insertarla en un PDF o realizar algún otro procesamiento, tenga en cuenta que Chrome almacenará en caché el primer resultado que no requiere una solicitud de verificación previa CORS, y luego intente obtener el mismo recurso sin la solicitud OPTIONS de verificación previa para la búsqueda y fallará debido a restricciones del navegador.

Otra forma de evitar esto es asegurarse de que S3Image incluya crossorigin: 'use-credentials' como se mencionó anteriormente. En el archivo que usa S3Image, (tengo un componente que crea una versión en caché de S3Image, por lo que es el lugar perfecto para mí), anule el método imageEl prototipo de S3Image para forzarlo a incluir este atributo.

S3Image.prototype.imageEl = function (src, theme) {
    if (!src) {
        return null;
    }
    var selected = this.props.selected;
    var containerStyle = { position: 'relative' };
    return (React.createElement("div", { style: containerStyle, onClick: this.handleClick },
        React.createElement("img", { crossOrigin: 'use-credentials', style: theme.photoImg, src: src, onLoad: this.handleOnLoad, onError: this.handleOnError}),
        React.createElement("div", { style: selected ? theme.overlaySelected : theme.overlay })));
};

El problema 403 ya está resuelto. ¡Qué dolor aggrr!

Philip Murphy
fuente
1
<AllowedOrigin>*</AllowedOrigin>

no es una buena idea porque con * otorga a cualquier sitio web acceso a los archivos en su bucket. En su lugar, debe especificar qué origen está permitido exactamente para usar los recursos de su depósito. Por lo general, ese es su nombre de dominio como

<AllowedOrigin>https://www.example.com</AllowedOrigin>

o si desea incluir todos los subdominios posibles:

<AllowedOrigin>*.example.com</AllowedOrigin>
Rudolf B
fuente
1

A continuación se muestra la configuración y está bien para mí. Espero que ayude a resolver su problema en AWS S3.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <ExposeHeader>ETag</ExposeHeader>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Gaurang Sondagar
fuente
Esto funcionó para mí para comenzar, luego reforcé la seguridad al eliminar los métodos que no eran necesarios y especificarlos solo en los encabezados que quería
hitwill
1

Primero, active CORS en su cubo S3. Use este código como guía:

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>http://www.example1.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>http://www.example2.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

2) Si aún no funciona, asegúrese de agregar también un "origen cruzado" con un valor "*" a sus etiquetas img. Pon esto en tu archivo html:

  let imagenes = document.getElementsByTagName("img");
    for (let i = 0; i < imagenes.length; i++) {
      imagenes[i].setAttribute("crossorigin", "*");
Christian Saavedra
fuente
0

La respuesta aceptada funciona, pero parece que si va directamente al recurso, entonces no hay encabezados de origen cruzado. Si está usando Cloudfront, esto hará que Cloudfront guarde en caché la versión sin encabezados. Cuando vaya a una URL diferente que cargue este recurso, obtendrá este problema de origen cruzado.

Tigre
fuente
0

Si la configuración de CORS no te ayuda.

Verifique que la configuración S3 sea ​​correcta. Tenía un nombre de cubo no válido en Storage.configure. Usé un nombre corto de cubo y causó un error:

No hay encabezado 'Access-Control-Allow-Origin' presente en el recurso solicitado.

Alejandro
fuente
-1

Por lo que vale, he tenido un problema similar: al intentar agregar un origen permitido específico (no *).

Resulta que tuve que corregir

<AllowedOrigin>http://mydomain:3000/</AllowedOrigin>

a

<AllowedOrigin>http://mydomain:3000</AllowedOrigin>

(tenga en cuenta el último slah en la URL)

Espero que esto ayude a alguien

Yossi Vainshtein
fuente