我正在尝试对 Django 函数进行 AJAX 调用,但在 iOS 8 中开始出现 CSRF 验证失败错误。它适用于最新的 iOS,并且曾经适用于 iOS 8。
这可能与最近对 TLS 的更新有关。我的主机最近弃用了 TLS 1.0 和 TLS_RSA_WITH_3DES_EDE_CBC_SHA。
我将 CSRF 令牌添加为 post 参数。如果我创建函数(服务器端)@csrf_exempt,那么调用就可以工作,但我显然不想剥夺安全性。
我只在 Safari 中测试过这个。我正在使用 Django 1.5.2。
HTML:
# this creates an input with the CSRF token as its value
<div id = "csrf_token" class = "hidden">{% csrf_token %}</div>
Javascript:
csrfmiddlewaretoken = $('#csrf_token input').val();
$.ajax({
type: "POST",
url: "<my_url>",
data: {"csrfmiddlewaretoken":csrfmiddlewaretoken},
success: function(data){
alert("ok");
}
,error: function(xhr, status, error) {
alert("error " + xhr.responseText);
}
});
是否有任何解决方案或者我必须停止支持 iOS 8?我仍然有一些用户在使用它。