2 Stimmen

django csrf schlägt auf dem Produktionsserver fehl

Ich war auf meinem Entwicklungsserver ohne Probleme arbeiten, wenn ich es in meinem Produktionsserver versucht, in einem echten Namen, nicht localhost noch ip, bekam ich:

    Forbidden (403)

CSRF verification failed. Request aborted.
Help

Reason given for failure:

    CSRF cookie not set.

Ich sende meinen Beitrag über Jquery, verwendet die Javascript-Fix zu posten Methode und alle ...

Ich weiß nicht, was ich sonst tun soll... kann mir jemand helfen?

Herzlichen Dank!

1voto

rz. Punkte 19415

Dass das Cookie nicht gesetzt ist, bedeutet normalerweise, dass Sie nicht die csrf-Middleware hinzufügen . Fügen Sie dies im entsprechenden Einstellungsmodul für Ihre Produktionsbereitstellung hinzu. Sie müssen auch sicherstellen, dass die empfangende Ansicht funktioniert, wenn sie über Javascript verwendet wird.

Sie haben zwei Möglichkeiten. Entweder Sie markieren die Ansicht auf dem Server als csrf_exempt oder Sie müssen Ihrer Anfrage ein csrf-Token beifügen. Das csrf-Token ist für jede Vorlage verfügbar als {% csrf_token %} . Ich würde Letzteres tun.

Um das csrf-Token in Ihre Anfrage aufzunehmen, müssen Sie es einfach als POST-Variable übergeben csrf_token . Sie können einfach ein Snippet in eine Vorlage wie diese einfügen:

<script type="text/javascript">
    var csrf_token = '{% csrf_token %}';
</script>

Und wo immer Sie eine Anfrage stellen, fügen Sie einfach "csrf_token": csrf_token, zu den Postdaten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X