2010-10-01 6 views
5

Sto scrivendo un'app che estrae blocchi di svg e li serve come parte di una pagina mista a css e javascript. Sto usando Python e Google App Engine. Quello che sto facendo funziona bene sul mio server di sviluppo locale ma non riesce a eseguire il rendering una volta distribuito.SVG in linea servito da script Python in Google App Engine non appare

Quindi, ecco qualche pitone di prova per costruire una risposta:

self.response.headers.add_header('Content-Type','application/xhtml+xml') 
self.response.out.write("<html xmlns='http://www.w3.org/1999/xhtml'>") 
self.response.out.write("<body>") 
self.response.out.write("<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>") 
self.response.out.write("<rect x='10' y='10' height='100' width='100' />") 
self.response.out.write("</svg>") 
self.response.out.write("</body></html>") 

Ora, se io chiedo questo sul server di sviluppo locale (sto usando Safari, ma Firefox funziona ugualmente) funziona e Vedo un quadrato nero. Se creo un documento xhtml con questo markup e carico quella pagina su un server, vedrò il quadrato, ma quando installerò questa app su un server ed eseguirò, non vedrò il quadrato. Tutto il markup è lì quando guardo View Source, ma non renderà.

Ho provato a utilizzare diversi tipi di mime. Ho provato ad aggiungere: <!DOCTYPE html> o aggiungere < ?xml version=1.0"?> e nessuno di questi fa la differenza.

Qualche idea?

risposta

6

Ho risolto il problema. Questa linea:

self.response.headers.add_header('Content-Type','application/xhtml+xml') 

non funzionava. Ho determinato che utilizzando http://web-sniffer.net per vedere quale tipo di contenuto ha accompagnato la pagina e restituiva sempre il testo/html predefinito.

La sintassi corretta è:

self.response.headers["Content-Type"] = "application/xhtml+xml" 

Ora tutto funziona solo peachy.

Non molte domande su SVG + google-app-engine su SO, ma questo potrebbe essere utile per qualcun altro in futuro.

Problemi correlati