Richtiger Content Type bei statischen Websites in Azure Storage

Aktuell experimentiere ich mit dem neuen Static website hosting for Azure Storage Feature, welches seit kurzem als Public Preview verfügbar ist. Hiermit lässt sich statischer Webcontent (HTML, CSS, JS, Bilder) direkt aus einem speziellen Azure Storage Blob-Verzeichnis aufrufen, ohne dass man hierfür noch irgendwelche Proxies einrichten muss.

Der große Vorteil hierbei ist, dass man sich nicht mehr um die typischen Webhosting-Fragen kümmern muss. Wie viele Kerne oder RAM brauche ich? Wie viele Instanzen? Und an welchen Standorten? Das alles kann man auch einfach Azure automatisch managen lassen.  Serverless all the way!

Nachdem ich also das Preview-Feature aktiviert und meine statische Website im $web Verzeichnis meines Storage Accounts abgelegt habe, hat die Seite auch direkt in Microsoft Edge funktioniert. In Chrome wurde jedoch statt die Seite anzuzeigen nur ein nicht weiter definiertes File heruntergeladen. Ein Blick mit dem Azure Storage Explorer in das Verzeichnis verriet, dass meine Dateien als application/octet-stream gespeichert wurden.

Richtig wäre in diesem Fall allerdings text/html. Das zu ändern geht am einfachsten erneut über den Azure Storage Explorer:

Rechtsklick auf die Datei => Properties… Hier kann das Content Type Feld dann entsprechend angepasst werden.

Für meine Zwecke war dies allerdings nicht ausreichend, da meine Seite täglich via  Azure Node SDK neu hochgeladen wird. Die von mir dabei benutzte Methode createBlockBlobFromText (docs) akzeptiert zusätzlich noch diverse Optionen, über die auch der Content Type richtig gesetzt werden kann:

const options = { contentSettings: { contentType: 'text/html' } }

In letzter Zeit hat sich im SDK die Struktur dieses Options-Objekts geändert, sodass es noch zahlreiche veraltete Beispiele zu finden gibt. Leider wirft ein falsches Options-Objekt keinen Fehler sondern wird einfach ignoriert.

Übrigens finde ich, dass Azure Storage durchaus den Content Type automatisch richtig anhand der Dateiendung setzten könnte…

Veröffentlicht von

Thomas

Developer, Consultant, Microsoft Insider MVP

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.