Django CSRF-Prüfung schlägt mit Ajax-POST-Anfrage fehl
Hintergrund:
Django verwendet eine Cross-Site-Anfrage Forgery (CSRF)-Schutzmechanismus, um zu verhindern, dass bösartige Websites im Namen eines Benutzers Formulare übermitteln oder Aktionen auslösen. Dies kann jedoch zu Problemen bei AJAX POST-Anfragen führen.
Lösung:
Die AJAX POST-Anfrage muss das CSRF-Token in ihrem Datenkörper enthalten, um Djangos CSRF zu übergeben überprüfen. Mit der Funktion $.ajax kann dies erreicht werden, indem einfach das Schlüssel-Wert-Paar csrfmiddlewaretoken zum Datenobjekt hinzugefügt wird:
$.ajax({ data: { somedata: 'somedata', moredata: 'moredata', csrfmiddlewaretoken: '{{ csrf_token }}' },
Die Django-Vorlagensprache unterstützt eine spezielle Variable, {{ csrf_token }}, die ruft das CSRF-Token ab und fügt es in den JavaScript-Code ein. Dieses Token wird verwendet, um zu überprüfen, ob die Anfrage von der erwarteten Quelle stammt, und um CSRF-Angriffe zu verhindern.
Durch die Einbindung des csrfmiddlewaretoken in den Datenkörper der AJAX POST-Anfrage stellen Sie sicher, dass Django die Anfrage erkennt und akzeptiert es, um die Daten zu verarbeiten und die gewünschte Aktion auszuführen.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine Django CSRF-Prüfung bei AJAX POST-Anfragen fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!