2013-08-18 11 views
22

Skonfigurowałem Amazon S3 do obsługi mojej statycznej witryny, speakeasylinguistics.com. Wydaje się, że wszystkie pliki DNS działają poprawnie, ponieważ dig +recurse +trace www.speakeasylinguistics.com wysyła poprawne informacje DNS.Amazon S3 pliki do pobrania index.html zamiast podawania

Ale gdy użytkownik używa visit the site in a browser przy użyciu punktu końcowego, strona pobierania zostanie pobrana zamiast wyświetlenia. Jak to naprawić?

Próbowałem już Chrome, Safari, FF. Zdarza się na nich wszystkich. Kiedyś Amazon's walkthrough na hosting domeny niestandardowej do T.

+1

Zwijanie -I z pliku zwraca: 'Content-Disposition: attachment' w nagłówkach - to właśnie powoduje problem. * Myślę *, że jest w meta danych dla pliku. – dc5

+0

Rozwiązałem ten problem, określając metadane (content-type = text/html) podczas przesyłania pliku html do S3 – PedroHidalgo

Odpowiedz

25

Running curl -I przeciwko url ty pisał daje następujący wynik:

curl -I http://speakeasylinguistics.com.s3-website-us-east-1.amazonaws.com/ 
HTTP/1.1 200 OK 
x-amz-id-2: DmfUpbglWQ/evhF3pTiXYf6c+gIE8j0F6mw7VmATOpfc29V5tb5YTeojC68jE7Rd 
x-amz-request-id: E233603809AF9956 
Date: Sun, 18 Aug 2013 07:58:55 GMT 
Content-Disposition: attachment 
Last-Modified: Sun, 18 Aug 2013 07:05:20 GMT 
ETag: "eacded76ceb4831aaeae2805c892fa1c" 
Content-Type: text/html 
Content-Length: 2585 
Server: AmazonS3 

Linia ta jest winowajcą:

Content-Disposition: attachment 

Jeśli używasz konsoli AWS, uważam, że można to zmienić, wybierając plik w S3 i modyfikując jego metadane, usuwając tę ​​właściwość.

16

Jeśli robisz to programowo, możesz ustawić w wysyłaniu parametry ContentType i/lub ContentDisposition.

[PHP Przykład]

 $output = $s3->putObject(array(
      'Bucket' => $bucket, 
      'Key' => md5($share). '.html', 
      'ContentType' => 'text/html', 
      'Body' => $share, 
    )); 

putObject Docs

1

Jeśli używasz Hashicorp Terraform można określić content-type na zasadzie aws_s3_bucket_object następująco

resource "aws_s3_bucket_object" "index" { 
    bucket = "yourbucketnamehere" 
    key = "index.html" 
    content = "<h1>Hello, world</h1>" 

    content_type = "text/html" 
} 

ten powinien służyć zawartości odpowiednio w przeglądarka.