2014-06-08 15 views
8

Używam Google App Engine z Pythonem 2.7 i próbuję użyć pliku svg jako arkusza sprite.Google App Engine wysyła SVG z niewłaściwym typem mime

Z jakiegoś powodu działa to dobrze na Win7 i Ubuntu, ale nie na systemach Vista i Mac (w każdym przypadku za pomocą najnowszej wersji Chrome i Firefox).

Tutaj jest wysyłany z mime-type "application/octet-stream", a przeglądarki monitują o pobranie go, zamiast go wyświetlać.

próbowałem przesłanianie mime-type w moim app.yaml tak:

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

- url: /img 
    static_dir: public/img 

Ale to niczego nie zmieni.

Próbowałem też do żądań do SVG plików za pośrednictwem własnej url jak ten

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

- url: /img 
    static_dir: public/img 

jednak, że wyniki w pliku wysyłanych z typu MIME „img/png”, więc przeglądarka będzie w najmniej spróbuj, aby go wyświetlić, ale nie możesz.

Wystarczy, aby upewnić się, próbowałem każdą kombinację, jak stwierdził, a także z nagłówkami-opcji:

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

bez powodzenia.

Proszę o pomoc?

[edytuj]

Po pewnym więcej badań, wydaje się, że na Ubuntu przy użyciu lokalnego app-wyrzutni, wysyła SVG jako text/html a po wdrożeniu używa application/octet-stream, niezależnie od tego, co mogę umieścić w aplikacji. yaml.

Czy ktoś ma z tym doświadczenie? Jedyny sposób, w jaki mogę to rozwiązać, to wstawienie kodu svg bezpośrednio na stronę, co jest do dupy. To grafika i chcę to potraktować w ten sposób.

[więcej edytuj]

W końcu kładę to w YAML-pliku i wydaje się działać:

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

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

proszę pisać edytuje twój OP z pełnym kodem .yaml zawierającym odpowiedź? –

Odpowiedz

8

Spróbuj:

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

Dzięki, że wydaje się działać dobrze! Każdy pomysł, dlaczego zachowuje się tak różnie na różnych komputerach klienckich? – HumanCatfood

+1

Obsługa odpowiedzi z niepoprawnym typem MIME zawsze będzie miała nieprzewidywalne wyniki. Niektórzy klienci będą próbowali zgadywać; wszystkie mają różne reguły dotyczące tego, jak to działa, a niektóre mogą polegać na obsłudze systemu operacyjnego, aby zgadnąć i/lub wyświetlić. To bardziej pogarszające, że AppEngine nie może odgadnąć właściwego typu MIME; to wydaje się całkiem proste w tym przypadku. – flamingcow

+0

Dlaczego flaga 'mime_type' w pliku' .yaml' nie działa? Jest w ich dokumentacji: https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Static_file_handlers Wydaje się być błędem GAE. – speedplane