2016-07-03 4 views
0

So habe ich auf dieser für eine Weile festgefahren. Ich habe eine MongoDB, die ich abfrage und als JSON zurückgebe.Übergeben Sie JSON von Flasche zu Vorlage und dekodieren Sie HTML-Entität

ich dies:

bson.json_utils.dumps(list(all_exams.find(query)) 

Ich gehe diese dann in einen Kolben Template-Variable in einem Inline-js Skript in HTML zu verwenden.

<div id="results"> 
    <table id="results-table"> 
    </table> 
    <p> 
    {{results_json}} 
    </p> 

</div> 


<script type="text/javascript" charset="utf-8"> 
$('#results-table').dynatable({ 
dataset: { 
    records: {{results_json}} 
} 
}); 
</script> 

Das Problem ist, dass in dem Skript kann die JSON nicht durch denotable richtig analysiert werden, weil es &#34; enthält, die das Unternehmen Wert für ein doppeltes Anführungszeichen, aber soll nicht es nicht so erscheinen, wenn ich die Quelle überprüfen Code. Sollte die HTML-Seite nicht als " angezeigt werden. Dies geschieht nur im Skriptbereich. Nicht im <p> Tag (der alle &#34; als " ausdruckt).

Was habe ich falsch verstanden?

Antwort

1

XSS-Angriffe zu vermeiden, Kolben und andere Vorlage Sprachen entkommen Werte von Standard: es " in die HTML-Entität umwandelt, so dass der Browser als Text für die Menschen wird angezeigt liest anstatt der Teil der HTML-Syntax (zB <a href="...">). Dies geschieht in allen Tags: Innerhalb des Tags <p> sehen Sie das Zitat in Ihrem Browser, aber der Quellcode ist immer noch die Entität.

Um dem Kolben zu sagen, dass er nicht entkommt, verwenden Sie {{results_json | safe}}. Du sagst, dass der Wert sicher ist, und nicht, um Flasche sicher zu machen (was sie vorher getan hat).

+0

Vielen Dank. Ich war viel zu lange daran fest! – trivk96