2010-04-11 18 views
17

Hice este sitio para mi amigo y yo subido a un depósito de Amazon S3 (http://ballard26.s3.amazonaws.com/index.html) y cuando voy a ese sitio la página no se carga correctamente y no tengo ni idea de por qué. ¿Algunas ideas?archivos de Amazon S3 no se publica correctamente

Por ejemplo, el stylesheet.css no se carga correctamente. Si va al http://ballard26.s3.amazonaws.com/stylesheet.css, descarga el archivo en lugar de cargarlo como CSS.

+2

Tendrás que decirnos lo que está mal. ¿Qué esperas ver y cómo es diferente de lo que realmente ves? – ChrisF

Respuesta

25

Compruebe los tipos mime (encabezado de tipo de contenido HTTP) en los archivos que cargó. S3 no siempre los establece correctamente. Es posible que deba configurarlos en la llamada a la API de carga. Algunas bibliotecas de carga lo harán por usted.

Si los tipos MIME no son correctas cuando el archivo se descarga desde el navegador de S3 si el tipo MIME no está configurado correctamente, no siempre va a procesar correctamente.

+0

o ... El tipo de mime puede ser correcto porque también hay un encabezado de disposición de contenido establecido en "archivo adjunto" – pinoyyid

+0

La forma excelente de ver rápidamente todos los encabezados es usar curl. Por ejemplo: $ curl -I http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css - asegúrate de agregar el '-I' para que se vean los encabezados y no el contenido del doc. –

4

yo supongo que no se ha especificado o establecer el tipo MIME del archivo correctamente al cargar el archivo. Como resultado, está predeterminado en binary/octet-stream.

Cuando carga su página, su navegador asume que la hoja de estilo que ha especificado no es un archivo CSS, ya que se sirve con un tipo de contenido distinto de text/css, por lo que no está aplicando la hoja de estilos.

2

que tenían el mismo problema en IE debido a la incorrecta del tipo de contenido de nuestros archivos/JS CSS.

Si está usando Ruby y la gema AWS, utilice el código siguiente:

s3 = Aws::S3Interface.new($s3[:s3_access_key_id],$s3[:s3_secret_access_key],{:multi_thread => true}); 
s3.put($s3[:s3_bucket],s3_path,file[:tempfile].read,{'x-amz-acl' => 'public-read', 'content-type' => 'text/css' }) 

Aviso a los diferentes sintaxis para el S3 Metadatos:

'content-type' => 'text/css' 
12

archivos CSS predeterminado a un tipo MIME octet/binary. Para corregir esto, inicie sesión en la consola de administración de AWS, vaya a la sección de Amazon S3 y busque el segmento correspondiente. Ubique el archivo CSS y seleccione Propiedades. Bajo metadatos, establecer la clave de Content-Type de valor: text/css

Si utiliza transmisión aplicación de pánico para Mac OS X, se puede establecer un Subir Personalizar encabezado de los archivos CSS de Content-Type: text/css que se aplicarán el tipo MIME correcto cada vez que se cargue un archivo, eliminando la necesidad de configurarlo manualmente en su consola cada vez.

Más información sobre este tema es en Adán Wilcox de blog post.

+2

Solo quería agregar que la respuesta Transmitir fue lo que me solucionó. Un archivo CSS estaba activando octeto/binario por algún motivo, aunque todos los demás estaban pasando correctamente, lo cual todavía no puedo explicar. Forzar el problema en Transmitir guardó mi glúteo. – jerclarke