the resource requested read present origin maxageseconds cross corb control aws allow amazon-web-services amazon-s3 cross-domain cors amazon-cloudfront

amazon web services - resource - ¿Por qué CloudFront varía la respuesta de los encabezados CORS en función de la codificación de aceptación?



no ''access-control-allow-origin'' header is present on the requested resource. (3)

Creo que el problema que tiene es causado por la falta de soporte nativo de CloudFront para CORS. En este momento no admiten Vary en el encabezado de origen, por lo que es posible que CloudFront entregue una respuesta en caché antigua que no tuviera los encabezados CORS correctos para su segunda solicitud (con codificación de aceptación: gzip).

Eche un vistazo a este hilo en el foro de AWS para encontrar una solución a este soporte faltante de CORS:

https://forums.aws.amazon.com/message.jspa?messageID=422504#422532

Estoy intentando que CORS funcione correctamente con Amazon S3 + CloudFront.

Después de configurar mi configuración de CORS, parece funcionar correctamente:

$ curl -H "Origin: https://app.close.io" -I "https://d4389n07pf8cq.cloudfront.net/built/app.9e1f9ee9.js" -s | grep Access Access-Control-Allow-Origin: https://app.close.io Access-Control-Allow-Methods: GET, HEAD Access-Control-Max-Age: 3000 Access-Control-Allow-Credentials: true

Pero cuando el recurso se solicita con Accept-Encoding: gzip , los encabezados CORS no se devuelven correctamente.

$ curl -H "Origin: https://app.close.io" -H "Accept-Encoding: gzip" -I "https://d4389n07pf8cq.cloudfront.net/built/app.9e1f9ee9.js" -s | grep Access (nothing)

¿Porqué es eso?

Mi configuración de CORS se ve así:

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

(También he intentado una configuración CORS con el encabezado Accent-Encoding eliminado).

El objeto S3 en sí mismo está comprimido y tiene "Metadatos" de Content-Encoding: gzip , Cache-Control: public, max-age=31536000 , y Content-Type: application/javascript .

No entiendo por qué CloudFront + S3 CORS no funciona correctamente al solicitar gzip.



Esto podría ayudarlo a usted, ya que he logrado que CORS funcione en S3 y Cloudfront. Noté que la primera vez que S3 y Cloudfront extraían archivos, casi guardaban en caché los encabezados, incluso después de haberlos cambiado. Asegúrese de que el control de versiones de "query param" esté habilitado y pueda agregar ?v=1 al final de su archivo. Esto "actualizó" los encabezados para nosotros y CORS fue bueno.