Laravel 5.1 xmlHttpRequest AJAX POST TokenMismatchException

时间:2015-10-25 04:07:26

标签: 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);

我现在已经试图解决这个问题几个小时了,老实说,此刻我不知道该怎么做。请注意,如果我使用表单方法,一切正常。我还尝试将CS​​RF令牌作为postString中的参数发送:" _token =" + csrfToken

2 个答案:

答案 0 :(得分:3)

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

有必要添加'内容类型' Laravel的标题能够读取POST' ed参数:

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

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

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

答案 1 :(得分:0)

如果您仍然无法解决上述问题,可以在下面尝试。

var token = $("#token").val();
const xhr = new XMLHttpRequest();
xhr.open("POST", "upload/media/files?_token="+token);

虽然$(“#token).val()已在隐藏的输入中,请参见下面的示例。

<input type="hidden" id="token" value="{{ csrf_token() }}" name="token">