2010-10-01 15 views
5

Estoy escribiendo una aplicación que extrae trozos de svg y los sirve como parte de una página mezclada con css y javascript. Estoy usando Python y Google App Engine. Lo que estoy haciendo funciona bien en mi servidor de desarrollo local, pero no se procesa una vez implementado.SVG en línea servido por Python Script en Google App Engine no aparece

Así que aquí hay algunos pitón de prueba para construir una respuesta:

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>") 

Ahora si solicito esto en el servidor de desarrollo local (estoy usando Safari, pero Firefox también funciona) funciona y Veo un cuadrado negro. Si creo un documento xhtml con este marcado, y lo cargo en un servidor, veré el cuadrado, pero cuando despliego esta aplicación en un servidor y la ejecuto, no veo el cuadrado. Todo el marcado está allí cuando miro View Source, pero no se renderizará.

He intentado utilizar diferentes tipos de mime. He intentado agregar: <!DOCTYPE html> o agregar < ?xml version=1.0"?> y nada de eso hace la diferencia.

¿Alguna idea?

Respuesta

6

He resuelto el problema. Esta línea:

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

no funcionaba. Decidí que al usar http://web-sniffer.net para ver qué tipo de contenido acompañaba a la página, y siempre devolvía el texto/html predeterminado.

La sintaxis correcta es:

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

Ahora todo funciona igual de color de rosa.

No hay muchas preguntas sobre svg + google-app-engine en SO, pero esto podría ser útil para otra persona en el futuro.