gpt4 book ai didi

javascript - django/backbone.js 中的 CSRF 验证失败

转载 作者:行者123 更新时间:2023-11-28 06:56:12 24 4
gpt4 key购买 nike

我正在尝试从轻量级 django 重新创建一个小项目 - https://github.com/lightweightdjango/examples/tree/chapter-5

我在尝试使用 super 用户帐户登录时收到 CSRF 错误。下面是我的 models.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();
}
});

最佳答案

从代码示例中不清楚您是否正在定义 CRSF token 。如果您使用 django 模板,则可以在代码中的某个位置将 {% csrf_token %} 设置为 CRSF token 。

关于javascript - django/backbone.js 中的 CSRF 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32552013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com