Laravel 5.1 xmlHttpRequest AJAX POST TokenMismatchException

jrg*_*man 8 php ajax laravel laravel-5 laravel-5.1

相关代码如下所示:

var csrfToken = "{{ csrf_token() }}";
xmlhttp.open("POST", "/internal/v1/create/strategy", true);
xmlhttp.setRequestHeader('X-CSRF-TOKEN', csrfToken);
postString = "param1=" + varOne + "&param2=" + varTwo;
xmlhttp.send(postString);
Run Code Online (Sandbox Code Playgroud)

我一直在努力解决这个问题几个小时,老实说,我不知道该做些什么.请注意,如果我使用表单方法,一切正常.我也尝试将CS​​RF令牌作为postString中的参数发送:"_ token ="+ csrfToken

jrg*_*man 3

该问题通过两部分解决方案得到解决:

有必要添加“Content-type”标头,以便 Laravel 能够读取 POST 的参数:

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
Run Code Online (Sandbox Code Playgroud)

此外,在 config/session.php 文件中,还需要将“domain”变量指向应用程序的实际域,而不是默认值 null。这可能是在初始设置期间完成的事情,但我一定忘记这样做了。

进行这两项更改后,POST 请求将通过 AJAX 调用成功完成。