2010-10-01 2 views
5

J'écris une application qui tire des morceaux de svg ensemble et les sert dans le cadre d'une page mélangée avec CSS et javascript. J'utilise Python et Google App Engine. Ce que je fais fonctionne bien sur mon serveur de développement local, mais ne parvient pas à rendre une fois qu'il est déployé.SVG en ligne servi par script Python dans Google App Engine n'apparaissant pas

Alors, voici quelques-uns python test pour construire une réponse:

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

Maintenant, si je demande ceci sur le serveur de développement local (j'utilise Safari, mais Firefox fonctionne aussi) il fonctionne et Je vois un carré noir. Si je crée un document xhtml avec ce balisage et que je télécharge cette page sur un serveur, je vois le carré, mais lorsque je déploie cette application sur un serveur et que je l'exécute, je ne vois pas le carré. Tout le balisage est là quand je regarde View Source, mais il ne sera pas rendu.

J'ai essayé d'utiliser différents types de mime. J'ai essayé d'ajouter: <!DOCTYPE html> ou en ajoutant < ?xml version=1.0"?> et rien de cela ne fait la différence.

Des idées?

Répondre

6

J'ai résolu le problème. Cette ligne:

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

ne fonctionnait pas. J'ai déterminé qu'en utilisant http://web-sniffer.net pour voir quel type de contenu accompagnait la page, et il retournait toujours le texte/html par défaut.

La syntaxe correcte est:

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

tout fonctionne maintenant juste Peachy.

Pas beaucoup de questions sur svg + google-app-engine sur SO, mais cela pourrait être utile pour quelqu'un d'autre dans le futur.