Я пытаюсь воссоздать небольшой проект из легкого Джанго - https://github.com/lightweightdjango/examples/tree/chapter-5CSRF проверка неудача в Джанго/Backbone.js
Я получаю ошибку CSRF при попытке войти в системе с учетной записью суперпользователя. Ниже приведены мои модели.js
(function ($, Backbone, _, app) {
// CSRF helper functions taken directly from Django docs
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/i.test(method));
}
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = $.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(
cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
// Setup jQuery ajax calls to handle CSRF
$.ajaxPrefilter(function (settings, originalOptions, xhr) {
var csrftoken;
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
// Send the token to same-origin, relative URLs only.
// Send the token only if the method warrants CSRF protection
// Using the CSRFToken value acquired earlier
csrftoken = getCookie('csrftoken');
xhr.setRequestHeader('X-CSRFToken', csrftoken);
}
});
Я пробовал клонировать весь проект в свою локальную папку. Я все еще получаю ошибку CSRF.
Django просто предоставляет API для проекта - шаблонирования и т.д. обрабатывается Backbone.js
Пожалуйста, дайте мне знать, если я должен отправить больше кода.
мой шаблон Войти, если это какой-либо помощи
var LoginView = FormView.extend({
id: 'login',
templateName: '#login-template',
submit: function (event) {
var data = {};
FormView.prototype.submit.apply(this, arguments);
data = this.serializeForm(this.form);
$.post(app.apiLogin, data)
.done($.proxy(this.loginSuccess, this))
.fail($.proxy(this.failure, this));
},
loginSuccess: function (data) {
app.session.save(data.token);
this.done();
}
});
ли вам на самом деле есть заголовок 'X-CSRFToken' с запросом на вход? –