2014-06-08 4 views
8

Ich benutze Google App Engine mit Python 2.7 und versuche eine Svg-Datei als Sprite-Sheet zu verwenden.Google App Engine sendet SVG mit falschem MIME-Typ

Aus irgendeinem Grund funktioniert dies gut auf Win7 und Ubuntu, aber nicht auf Vista oder Mac (jeweils mit den neuesten Chrome und Firefox).

Hier wird es mit dem MIME-Typ "application/octet-stream" gesendet und der Browser fordert ihn auf, es herunterzuladen, anstatt es anzuzeigen.

Ich versuchte, den Mime-Typ in meinem app.yaml wie folgt überschrieben:

- url: /img/.*\.svg 
    static_dir: public/img 
    mime_type: image/svg+xml 

- url: /img 
    static_dir: public/img 

Aber das änderte nichts.

ich auch für svg-Dateien durch ihre eigene URL, um Anfragen versucht, wie diese

- url: /img/svg 
    static_dir: public/img 
    mime_type: image/svg+xml 

- url: /img 
    static_dir: public/img 

Aber das führt in der Datei mit MIME-Typ „img/png“ gesendet wird, so wird der Browser auf mindestens versuchen, um es anzuzeigen, kann aber nicht.

Nur um sicher zu machen, habe ich versucht, jede Kombination angegeben, wie und auch mit den Header-Optionen:

- url: /img/svg 
    static_dir: public/img 
    http_headers: 
    mime-type: image/svg+xml 

Ohne Erfolg.

Irgendwelche Hilfe bitte?

[Bearbeiten]

Nach einigen weiteren Tests, wie es scheint, auf Ubuntu die lokale App-Launcher verwenden, sendet er das svg als text/html und wenn sie entfaltet es verwendet application/octet-stream, unabhängig davon, was ich in der App setzen. Yaml.

Hat jemand Erfahrung damit? Der einzige Weg, dies zu lösen, ist, den svg-Code direkt in die Seite einzufügen, was irgendwie nervt. Es ist eine Grafik und ich möchte sie so behandeln.

[mehr bearbeiten]

Am Ende Ich habe dies in der yaml-Datei und es scheint zu funktionieren:

- url: /img/.*\.svg 
    static_dir: public/img 
    http_headers: 
    content_type: image/svg+xml 

- url: /img 
    static_dir: public/img 
+0

Bitte senden Sie bearbeitet zu Ihr OP mit dem vollen .yaml Code einschließlich der Antwort? –

Antwort

8

Versuche:

http_headers: 
    content-type: image/svg+xml 
+0

Danke, das scheint gut zu funktionieren! Irgendeine Idee, warum es sich auf den verschiedenen Client-Computern so unterschiedlich verhält? – HumanCatfood

+1

Das Bereitstellen von Antworten mit einem falschen MIME-Typ führt immer zu unvorhersehbaren Ergebnissen. Einige Kunden werden versuchen zu erraten; Sie haben alle unterschiedliche Regeln dafür, wie diese Schätzung funktioniert, und einige können sich auf die Unterstützung des Betriebssystems verlassen, um das Raten und/oder Anzeigen durchzuführen. Erschwerend kommt hinzu, dass AppEngine den richtigen MIME-Typ nicht erraten kann. das scheint in diesem Fall ziemlich einfach zu sein. – flamingcow

+0

Warum funktioniert das 'mime_type' Flag in der' .yaml' Datei nicht? Es ist in ihrer Dokumentation: https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Static_file_handlers Scheint wie ein GAE-Fehler. – speedplane