iOS 上 AJAX 的 Django CSRF 错误 8
Django CSRF error with AJAX on iOS 8
我正在尝试对 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?我还有一些用户在使用它。
问题原来是没有在iOS 8 中传递referer,这导致CSRF 失败。未传递引荐来源网址,因为该页面正在使用引荐来源网址元标记。
<meta name="referrer" content="always">
<meta name="referrer" content="unsafe-url">
这在 iOS 8.
中不起作用
我正在尝试对 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?我还有一些用户在使用它。
问题原来是没有在iOS 8 中传递referer,这导致CSRF 失败。未传递引荐来源网址,因为该页面正在使用引荐来源网址元标记。
<meta name="referrer" content="always">
<meta name="referrer" content="unsafe-url">
这在 iOS 8.
中不起作用