Update: CloudFront selbst bietet keinen integrierten Mechanismus zum Bearbeiten von Headern, aber [email protected], in Verbindung mit CloudFront verwendet, bietet einen Mechanismus zum Erstellen von Hooks, die Ursprung Antwortheader überprüfen und ändern können. Es kann den Antworttextkörper nicht tatsächlich untersuchen, aber kann statische oder heuristisch abgeleitete Header injizieren. Dies ist möglicherweise eine praktikable Problemumgehung, wenn der Inhalt aus einer bekannten/vertrauenswürdigen Quelle stammt und der Inhaltstyp bekannt ist, aber nicht für vom Benutzer gesendete Inhalte verwendet werden sollte, da ein falscher Inhaltstyp die Nutzdaten durch einen Browser falsch interpretieren könnte und könnte ein potenzieller Exploit-Vektor sein. Es ist wahrscheinlich immer noch die bessere Lösung, den Inhaltstyp korrekt auf das Objekt zu setzen, wenn es hochgeladen wird.
Die ursprüngliche Antwort hier vor-dates Lambda @ Edge und bezieht sich auf native Funktionen von CloudFront selbst.
CloudFront verwendet die vom Ursprungsserver bereitgestellten Antwortheader, unabhängig davon, ob es sich um S3 oder einen benutzerdefinierten Ursprung handelt. CloudFront bietet keinen Mechanismus, um sie neu zu schreiben oder hinzuzufügen.
Die Lösung besteht darin, die Content-Type
auf das Objekt beim ursprünglichen Upload in S3 zu setzen.
Wenn Sie die Datei mit Content-Type
in S3 hochladen, wird derselbe Wert zurückgegeben, wenn das Objekt heruntergeladen wird (entweder direkt von S3 oder über CloudFront). Andernfalls müssen Sie Objekte nach dem Hochladen ändern, wenn Sie nicht den Standardkopf Content-Type: application/octet-stream
möchten, den S3 zuweist, wenn Sie keinen angeben.