Frage

Ich habe Pyjama und Django über Apache2 mit mod_wsgi unter Windows 7 ausgeführt. Ich glaube nicht Formen. Der Versuch, Pyjamas-erzeugte Formulare in meiner Anwendung zu verwenden, erzeugt 403S (die Fehlerseite "CSRF-Verifizierung fehlgeschlagen").

Ich habe Stunden damit verbracht und alle Antworten gelesen, die ich hier mit CSRF und Pyjamas finden konnte, und habe viele externe Forschungen nur über CSRF und Django, Django und Ajax usw. durchgeführt, wenn diese Frage niemanden erreicht Wer weiß, was in dieser Situation zu tun ist? Ich glaube, ich habe die Essenz der Frage niedergeschlagen.

Wie würde man das bekommen {% csrf_token %} in die von Pyjamas generierte Form? Es scheint, als ob es unmöglich sein könnte, denn soweit ich verstehe, sind CSRF-Token nicht hartnäckig, was eine von Pyjamas generierte Seite ist ... meine Pyjamas-Seite wird aus einem Pyjamas generiert .py Datei, was zu einem Ordner voller hartcodierter Dinge führt. Wie kommt es, dass ich das aktuelle CSRF-Token in diese bereits codierte Form integrieren würde?

Bitte zögern Sie nicht, weitere Details zu fragen. Dieses Problem war unglaublich schwer zu navigieren. Keine der veröffentlichten Informationen zur Integration von Pyjama & Django betrachtet dies. und die einzigen Lösungen, die ich gefunden habe, die sich der CSRF in Django bewusst zu sein scheinen, sagen, Sie sollten wahrscheinlich nur den CSRF -Schutz deaktivieren (was ich könnte Tu, aber welchen Schutz könnte ich dafür setzen? Mein eigenes Cookie -System? Ist es eine schreckliche Idee, den CSRF -Schutz in jedem Fall zu deaktivieren?).

Vielen Dank!

War es hilfreich?

Lösung

Sie müssen ein JavaScript schreiben, um das CSRF -Token aus dem Cookie (Teil der HTTP -Anfrage) zu erhalten, und fügen Sie es dann dem Formular beim Senden hinzu.

Sehen Sie sich diese Antwort für einen Ausgangspunkt an: Django CSRF -Check, der bei einer AJAX -Postanforderung fehlschlägt

Der Schlüssel hier ist, dass das JavaScript so hartnäckig sein kann wie Ihre von Pyjamas generierten Dateien, da sie das Token aufschieben, bis das Formular eingereicht wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top