Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Django-CSRF令牌在Ajax登录后似乎无效 我有一个页面,可以查看或不验证 此页面包含表单(及其CSRF令牌) 表单需要考虑身份验证 我通过ajax管理身份验证检查(表单提交) 如果用户未通过身份验证,他可以从新窗口(带有链接)进行身份验证 验证后,用户可以关闭新窗口并重新提交表单_Ajax_Django_Authentication_Csrf - Fatal编程技术网

Django-CSRF令牌在Ajax登录后似乎无效 我有一个页面,可以查看或不验证 此页面包含表单(及其CSRF令牌) 表单需要考虑身份验证 我通过ajax管理身份验证检查(表单提交) 如果用户未通过身份验证,他可以从新窗口(带有链接)进行身份验证 验证后,用户可以关闭新窗口并重新提交表单

Django-CSRF令牌在Ajax登录后似乎无效 我有一个页面,可以查看或不验证 此页面包含表单(及其CSRF令牌) 表单需要考虑身份验证 我通过ajax管理身份验证检查(表单提交) 如果用户未通过身份验证,他可以从新窗口(带有链接)进行身份验证 验证后,用户可以关闭新窗口并重新提交表单,ajax,django,authentication,csrf,Ajax,Django,Authentication,Csrf,在这种情况下,Django告诉我我的CRSF令牌不再有效 CSRF令牌丢失或不正确 我想那是因为会话id发生了变化或类似的事情 我的断言正确吗? 如何允许用户在不重新加载页面的情况下重新提交表单?虽然上述方法可用于AJAX POST请求,但也有一些不便之处:您必须记住在每次POST请求中都将CSRF令牌作为POST数据传递进来。因此,有一种替代方法:在每个XMLHttpRequest上,将自定义X-CSRFToken头设置为CSRF令牌的值。这通常更容易,因为许多javascript框架提供了钩

在这种情况下,Django告诉我我的CRSF令牌不再有效

CSRF令牌丢失或不正确

我想那是因为会话id发生了变化或类似的事情

我的断言正确吗?

如何允许用户在不重新加载页面的情况下重新提交表单?

虽然上述方法可用于AJAX POST请求,但也有一些不便之处:您必须记住在每次POST请求中都将CSRF令牌作为POST数据传递进来。因此,有一种替代方法:在每个XMLHttpRequest上,将自定义X-CSRFToken头设置为CSRF令牌的值。这通常更容易,因为许多javascript框架提供了钩子,允许在每个请求上设置头

您需要通过AJAX调用发送CSRF令牌:

$.ajaxSetup({ 
     beforeSend: function(xhr, settings) {
         function getCookie(name) {
             var cookieValue = null;
             if (document.cookie && document.cookie != '') {
                 var cookies = document.cookie.split(';');
                 for (var i = 0; i < cookies.length; i++) {
                     var cookie = jQuery.trim(cookies[i]);
                     // Does this cookie string begin with the name we want?
                 if (cookie.substring(0, name.length + 1) == (name + '=')) {
                     cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                     break;
                 }
             }
         }
         return cookieValue;
         }
         if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
             // Only send the token to relative URLs i.e. locally.
             xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
         }
     } 
});
$.ajaxSetup({
发送前:功能(xhr、设置){
函数getCookie(名称){
var-cookieValue=null;
if(document.cookie&&document.cookie!=''){
var cookies=document.cookie.split(“;”);
对于(变量i=0;i

这里是参考链接,

OK!!!!现在我了解了从cookie发布CRSF而不是从模板的
{%CRSF\u token%}