How can I get new CSRF token in LARAVEL by using ajax
By using this code you can get a new token after login by using the regenerate()
method and returning a new csrf_token()
in the response.
Your Controller inside the function:
public function refreshToken(Request $request){ session()->regenerate(); return response()->json([ "token"=>csrf_token()], 200);}
JavaScript:
$.ajax({ url: "{{url('refresh-token')}}", type: 'get', dataType: 'json', success: function (result) { $('meta[name="csrf-token"]').attr('content', result.token); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': result.token } }); }, error: function (xhr, status, error) { console.log(xhr); }});
Just add this to your script
<script type="text/javascript"> $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') } });</script>
And make sure you have added token to your meta tag like below.
<meta name="_token" content="{!! csrf_token() !!}" />
I hope this will work for you.
Link https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token
If you still found the same issue then please review these pieces of stuff
And Make sure you take a look at all answers, not only checked one