ajax - resource - razón encabezado cors access control allow origin faltante
S3: Sin ''Access-Control-Allow-Origin'' para AJAX POST (2)
puedes intentar cambiando
<?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>
Este problema me está volviendo un poco loco. Estoy intentando subir archivos a través de AJAX POST a un cubo S3.
Tengo todas las credenciales correctas porque cuando hago POST HTTP normales, crea el recurso en el depósito S3 muy bien. Pero me gustaría cargar múltiples archivos a la vez con barras de progreso, por lo tanto, necesito AJAX.
Tengo la configuración CORS en mi cubo S3:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://localhost:3000</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
En este momento solo estoy tratando de hacerlo funcionar en mi entorno de desarrollo (localhost: 3000, usando Rails estándar 4.1).
Desde mi entendimiento, la regla CORS anterior debería permitir las solicitudes AJAX de localhost: 3000 a la categoría S3.
Sin embargo, cada vez que envío un archivo a través de AJAX, aparece el siguiente error:
XMLHttpRequest cannot load https://s3.amazonaws.com/<BUCKET>. No ''Access-Control-Allow-Origin'' header is present on the requested resource. Origin ''http://localhost:3000'' is therefore not allowed access.
Esto no tiene ningún sentido para mí porque se otorga acceso a localhost: 3000 IS a través de la regla CORS.
También proporcioné un fragmento del JS que utilicé para enviar el formulario:
$.ajax({
method: "POST",
crossDomain: true,
url: "https://s3.amazonaws.com/<BUCKET>",
data: $(this).serialize() # Contains S3 necessary values
})
El formulario tiene entradas para las claves de Amazon S3 / etc necesarias. Sé que funcionan porque cuando hago POST HTTP normales, crea el activo correctamente en S3. Todo lo que intento hacer es AJAXify el proceso.
¿Me estoy perdiendo algo obvio aquí?
Usando: Rails 4.1, jquery-file-upload, fog gem (para S3)
Su pregunta parece muy similar a un problema que tuve, que nunca fue contestado correctamente (con precisión) tampoco y parecía ser un problema relacionado con una limitación del navegador en lugar de la tecnología de transferencia real detrás de él.
Aquí hay un enlace a mi pregunta original y las respuestas que recibí aquí en SO: ¿Por qué Microsoft Skydrive no descarga varios archivos a través de API?
Con suerte, esto puede ofrecer una idea de su problema y no es solo ruido.