He agregado configuraciones de CORS adicionales en la interfaz de usuario de DigitalOcean Spaces como esta:

Todavía no obtengo el encabezado access-control-allow-origin en la solicitud de objeto de mi navegador.
Cuando los objetos se cargan desde mi backend, " public-read " se establece como ACL.
Estoy esperando, cuando la solicitud del objeto (imagen en mi caso) se realiza desde mi aplicación web en el navegador, sus encabezados de respuesta deben tener access-control-allow-origin: http://my.machine.localhost .
Este es un requisito estricto de HTML canvas toDataURL() cuando el componente canvas tiene imágenes de fuentes que no son de origen.
Primero el problema del localhost
DO (DigitalOCean) no le permite configurar localhost en el campo de origen CORS. Para esto, puede actualizar su /etc/hosts para darle a su localhost un nombre aceptable. tengo
127.0.0.1 my.machine.localhostDe esta manera, es fácil de configurar en la configuración CORS de los espacios DO y presionar my.machine.localhost en su navegador debería abrir su aplicación ejecutándose en localhost (ejecuto mi aplicación en el puerto 80).
En segundo lugar, los encabezados CORS
Deshabilite CDN hasta que solucione el problema o tenga que purgar el caché varias veces. Use curl o httpie o algo similar para probar, ya que los navegadores tienden a almacenar objetos en caché.
Supongo que los objetos se cargan con ACL public-read .
Ahora verifique los encabezados de solicitud y respuesta con curl o httpie.
$ http -v https://***.***.digitaloceanspaces.com/static/images/logo.png Aquí está la parte complicada: aunque haya configurado su CORS, la respuesta no tendrá el encabezado access-control-allow-origin . Para que funcione, debe configurar el encabezado Origin en su solicitud, que debe coincidir con al menos uno de los orígenes configurados en la interfaz de usuario de DO Spaces para su depósito.
$ http -v https://***.***.digitaloceanspaces.com/static/images/logo.png "Origin:http://my.machine.localhost" Esto devolverá access-control-allow-origin y access-control-allow-methods según su configuración.
Los espacios DO implementan la misma API que AWS S3. Por lo tanto, es mejor buscar documentos S3 cuando se atasca. Encontré esto en los documentos de AWS S3 CORS https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors-troubleshooting.html
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.
Hay muchos tutoriales en línea que recomiendan usar s3cmd y configurar CORS con comodines * ; piénselo dos veces antes de hacerlo, ya que es muy inseguro.