正在问题标题中提出问题。
我想在这里更具体一点,原谅我的英语。
我目前正在使用openjift上的django jquerymobile网站。 我有一个登录页面,它使用ajax并发送邮件请求。我做过类似的事情。
var account = '{"Email" : "' + username + '" , "Password" : "' + password + '"}';
$.ajax({
url: "/Account/Login",
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRFToken", '{{ csrf_token }}');
},
type: "POST",
data: { "account" : account },
success: function(data) {
var obj = eval("(" + data + ")");
if (obj.Status == "100")
{
if(typeof(Storage)!=="undefined")
{
sessionStorage.user = username;
window.location = "/";
}
}
else if (obj.Status == "101")
{
invalid parameters sent.
}
else if (obj.Status == "102")
{
email doesnt exist / email & password pair doesn't match.
}
},
});
obj.Status基本上是一个带有Status&的json回复。信息。用户名和密码是用户输入的。我也试过使用发送csrfmiddlewaretoken的数据,结果相同。
那么任何解决方案?顺便说一下,我在iPhone 4S和谷歌Chrome上测试它。在此先感谢人们:)
答案 0 :(得分:0)
在模板页面中添加{% csrf_token %}
。
在Javascript中:
var input = document.getElementsByName('csrfmiddlewaretoken')[0]
var csrftoken = input.getAttribute('value');
并csrfmiddlewaretoken: csrftoken
进入您的POST请求数据
在视图上使用@ensure_csrf_cookie
django.views.decorators.csrf
装饰器