2010-04-11 5 views
17

이 사이트를 제 친구 용으로 만들어서 아마존 S3 버킷 (http://ballard26.s3.amazonaws.com/index.html)에 업로드했으며 해당 사이트로 이동하면 페이지가 올바르게로드되지 않아 그 이유를 모르겠습니다. 어떤 아이디어?Amazon S3가 파일을 올바르게 제공하지 않습니다.

예를 들어 stylesheet.css이 올바르게로드되지 않습니다. http://ballard26.s3.amazonaws.com/stylesheet.css으로 이동하면 파일을 CSS로로드하는 대신 다운로드합니다.

+2

무엇이 잘못되었는지 Google에 알려야합니다. 당신은 무엇을 볼 것으로 예상합니까? 실제로 보는 것과는 어떻게 다른가요? – ChrisF

답변

25

업로드 한 파일의 MIME 유형 (HTTP 콘텐츠 유형 헤더)을 확인하십시오. S3가 항상 올바르게 설정되지는 않습니다. 업로드 API 호출에서 설정해야 할 수도 있습니다. 일부 업로드 라이브러리가 대신이 작업을 수행합니다.

MIME 형식이 올바르게 설정되지 않은 경우 S3에서 브라우저에서 파일을 다운로드 할 때 MIME 형식이 올바르지 않으면 올바르게 렌더링되지 않습니다.

+0

또는 마임 유형은 "첨부 파일"로 설정된 콘텐츠 처리 헤더가 있습니다. – pinoyyid

+0

빨리 모든 머리글을 볼 수있는 좋은 방법은 말풍을 사용하는 것입니다. 예를 들면 다음과 같습니다. $ curl -I http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css - '-I'를 추가하여 헤더가 표시되고 내용이 표시되지 않도록하십시오 의사. –

4

나는 파일을 업로드 할 때 파일의 MIME 유형을 올바르게 지정하거나 설정하지 않았다고 생각합니다. 결과적으로 기본값은 binary/octet-stream입니다.

페이지를로드 할 때 브라우저는 지정한 스타일 시트가 text/css이 아닌 콘텐츠 유형으로 제공되고 있으므로 스타일 시트를 적용하지 않기 때문에 CSS 파일이 아니라고 가정합니다.

2

CSS/JS 파일의 내용 유형이 잘못되어 IE에서 같은 문제가 발생했습니다.

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 메타 데이터에 대한 다른 구문 :의 MIME 타입

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

CSS 파일의 기본

루비와 AWS의 보석을 사용하는 경우, 코드 이것을 사용 octet/binary. 이 문제를 해결하려면 AWS Management Console에 로그인하고 Amazon S3 섹션으로 이동하여 관련 버킷을 찾으십시오. CSS 파일을 찾아 속성을 선택하십시오. 메타 데이터에서 Content-Type 키의 값을 다음과 같이 설정하십시오. text/css

Mac OS X 용 패닉 전송 앱을 사용하는 경우 CSS 파일의 사용자 정의 업로드 헤더를 Content-Type: text/css으로 설정하면 매번 올바른 MIME 유형이 적용됩니다 매번 콘솔에 수동으로 설정할 필요가 없으므로 파일을 업로드하십시오.

자세한 내용은 Adam Wilcox의 blog post입니다.

+2

그냥 전송 응답이 나를 위해 그것을 해결했다고 추가 싶었어요. 하나의 CSS 파일이 어떤 이유로 든 옥텟/바이너리를 트리거하고있었습니다. 다른 모든 것들은 올바르게 진행되었지만 아직도 설명 할 수 없습니다. 전송에서 문제를 강제로 내 대둔근을 저장했습니다. – jerclarke

관련 문제