我正在使用Laravel 5.5。当我从laravel刀片发送POST请求时。一切都很好:
$.post({
url: 'http://localhost/check',
data: {
_token: CSRF_TOKEN, // I have CSRF token variable above.
test: "it works"
}
})
但我想用socket.io发送该请求> node.js> laravel:
socket.emit('checkPost', { token: CSRF_TOKEN });
index.js
socket.on('checkPost', function (csrf) {
request.post({
url: 'http://localhost/check',
form: {
_token: csrf.token,
test: "it works"
}
});
});
用ajax一切都好。在这里,我得到了令牌不匹配。为什么呢?
当我在VerifyCsrfToken
中为/ check路由禁用令牌验证时,节点请求也会起作用。
我该如何解决?也许有控制器csrf检查方法?然后我会检查控制器中的帖子csrf ..提前感谢,抱歉我的英语不好。
答案 0 :(得分:0)
您错过了令牌变量名称之前的下划线。 Laravel的令牌输入名称是“_token”而不是“token”。你必须这样写:
socket.emit('checkPost', { _token: CSRF_TOKEN });
这只是一个错字。
希望这会有所帮助。