2015-10-25 70 views
7

相关的代码如下所示:Laravel 5.1 XMLHttpRequest的AJAX POST TokenMismatchException

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); 

我一直在努力,现在摸不着头脑了几个小时,我真的不知道在这一点上做的。请注意,如果我使用表单方法,一切正常。我也试着发送CSRF令牌作为postString参数:“_token =” + csrfToken

+0

你用'X-XSRF-TOKEN'试过了吗? – Iamzozo

+0

您是否尝试调试发布请求以查看头部是否实际传输?我也看不到你如何实例化你的xmlhttp对象。 – Tim

+0

xmlhttp对象通常在代码的早期实例化,但我能够修复代码。有两个问题在这里播放,在config/session.php文件的域被设置为空,我在某处读到这需要安装,否则它会导致错误,所以我做了这个,但另外我需要包含内容类型为url编码形式。 – jrgilman

回答

2

这个问题是通过两部分的解决方案解决:

有必要添加“内容 - 键入”标题为Laravel能够读取POST'ed参数:

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

另外,在配置/ session.php文件文件是必要的也点‘朝向的实际域的域’可变该应用程序,而不是null的默认值。这可能是在初始设置过程中完成的,但我一定忘了这么做。

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

相关问题