提交表单后更新CSRF

问题描述 投票:1回答:1

我想实现该图像中显示的功能。用户将单击编辑按钮并激活页面中单个字段的表单。

enter image description here

使用Ajax,我将更新模型,并在成功后再次恢复显示。这里的问题是CSRF_TOKEN。用户更新第一个字段后,无论是哪个字段,第二个编辑都将返回错误500令牌不匹配消息。

我尝试了许多不同的方法,包括我在这里看到的最后一个方法:

$.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' ) );
    }
  }
} );

但是我仍然在第二次提交时收到错误消息。我知道我需要做的就是在我的meta <meta name="csrf-token" content="{{ csrf_token() }}">中更新令牌的值,但是我没有关于如何做的想法,我真的很想保持此功能而不刷新页面。

也许从控制器返回新的CSRF,它返回结果并在ajax请求的成功阶段使用类似$( 'meta[name="csrf-token"]' ).val( response.csrf );的东西?

jquery laravel ajaxform csrf-token
1个回答
0
投票
       $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
        });
© www.soinside.com 2019 - 2024. All rights reserved.