Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 8上使用AJAX时出现Django CSRF错误_Django_Csrf Protection_Tls1.1 - Fatal编程技术网

iOS 8上使用AJAX时出现Django CSRF错误

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令牌作为其值的输入 {%

我试图对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_令牌%}
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">