iOS 8上使用AJAX时出现Django CSRF错误
我试图对Django函数进行AJAX调用,但在iOS 8中出现了CSRF验证失败错误。它适用于最新的iOS,并用于iOS 8 这可能与TLS最近的更新有关。我的主机最近弃用了TLS 1.0和TLS_RSA_,使用了3DES_EDE_CBC_SHA 我添加CSRF令牌作为post参数。如果我将函数(服务器端)@csrf_设为豁免,那么调用会起作用,但我显然不想剥夺安全性 我只在Safari中测试过这个。我正在使用Django 1.5.2 HTML:iOS 8上使用AJAX时出现Django CSRF错误,django,csrf-protection,tls1.1,Django,Csrf Protection,Tls1.1,我试图对Django函数进行AJAX调用,但在iOS 8中出现了CSRF验证失败错误。它适用于最新的iOS,并用于iOS 8 这可能与TLS最近的更新有关。我的主机最近弃用了TLS 1.0和TLS_RSA_,使用了3DES_EDE_CBC_SHA 我添加CSRF令牌作为post参数。如果我将函数(服务器端)@csrf_设为豁免,那么调用会起作用,但我显然不想剥夺安全性 我只在Safari中测试过这个。我正在使用Django 1.5.2 HTML: #这将创建一个以CSRF令牌作为其值的输入 {%
#这将创建一个以CSRF令牌作为其值的输入
{%csrf_令牌%}
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);
}
});
csrfmiddlewaretoken=$('csrf#u令牌输入').val();
$.ajax({
类型:“POST”,
url:“”,
数据:{“csrfmiddlewaretoken”:csrfmiddlewaretoken},
成功:功能(数据){
警报(“正常”);
}
,错误:函数(xhr,状态,错误){
警报(“错误”+xhr.responseText);
}
});
有什么解决办法吗?或者我必须停止支持iOS 8吗?我仍然有一些用户在使用它。问题是iOS 8中没有传递referer,这导致CSRF失败。未传递Referer,因为页面正在使用Referer元标记
<meta name="referrer" content="always">
<meta name="referrer" content="unsafe-url">
这在iOS 8中不起作用
<meta name="referrer" content="always">
<meta name="referrer" content="unsafe-url">