Amazon s3 Amazon S3未正确提供文件

Amazon s3 Amazon S3未正确提供文件,amazon-s3,amazon-web-services,content-type,bucket,Amazon S3,Amazon Web Services,Content Type,Bucket,我为我的朋友创建了这个网站,并将其上传到AmazonS3 bucket()中,当我访问该网站时,页面无法正确加载,我不知道为什么。有什么想法吗 例如,stylesheet.css无法正确加载。如果转到,它将下载文件,而不是将其作为CSS加载。检查您上载的文件上的mime类型(HTTP内容类型头)。S3并不总是正确设置它们。您可能需要在upload API调用中设置它们。一些上载库将为您执行此操作 如果从S3从浏览器下载文件时mime类型不正确,如果mime类型设置不正确,则不会始终正确呈现 我猜

我为我的朋友创建了这个网站,并将其上传到AmazonS3 bucket()中,当我访问该网站时,页面无法正确加载,我不知道为什么。有什么想法吗

例如,
stylesheet.css
无法正确加载。如果转到,它将下载文件,而不是将其作为CSS加载。

检查您上载的文件上的mime类型(HTTP内容类型头)。S3并不总是正确设置它们。您可能需要在upload API调用中设置它们。一些上载库将为您执行此操作


如果从S3从浏览器下载文件时mime类型不正确,如果mime类型设置不正确,则不会始终正确呈现

我猜您在上载文件时没有正确指定或设置文件的mime类型。因此,它默认为
二进制/八位字节流


加载页面时,浏览器会假定您指定的样式表不是CSS文件,因为它提供的内容类型不是
text/CSS
,因此不会应用样式表。

由于CSS/JS文件的内容类型不正确,我在IE中也遇到了同样的问题

如果您使用的是Ruby和AWS gem,请使用以下代码:

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' })
请注意S3元数据的不同语法:

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

CSS文件默认为MIME类型
octet/binary
。要更正此问题,请登录AWS管理控制台,转到AmazonS3部分并找到相关的bucket。找到CSS文件并选择属性。在元数据下,将内容类型键设置为值:
text/css

如果您使用Panic的Transmit app for Mac OS X,您可以为
内容类型:text/CSS
的CSS文件设置自定义上载头,该头将在每次上载文件时应用正确的MIME类型,无需每次在控制台中手动设置


亚当·威尔科克斯(Adam Wilcox)提供了更多信息。

您需要告诉我们出了什么问题。你期望看到什么?它与你实际看到的有什么不同?或者。。。mime类型可以是正确的,因为还有一个contentdispositionheader设置为“attachment”,快速查看所有头的好方法是使用curl。例如:$curl-I——确保添加'-I',以便查看标题而不是文档的内容。一个CSS文件出于某种原因触发了八位字节/二进制文件,尽管其他所有文件都进行了正确的处理,但我仍然无法解释。把这个问题强加于我的臀部。