【发布时间】:2018-05-26 04:14:55
【问题描述】:
我正在从子域向主域发出 AJAX 请求。我已经设置了 CORS,以便将子域自动附加到允许的域列表中。我收到419 (unknown status) 错误,在转储错误后我发现我收到TokenMissmatchException。
我也注意到这是真的,因为我也看到了:
"_token" => "h7I07Iv0m4sF7XHhXjtygnfCtITgzCi3Ml8lfT7Z" // <-- sent
"_token" => "N118Izko7j5uf851MpijBXInFLaUVicRdf9uw3h4" // <-- in session
当我在检查请求时在标头部分看到它时,显然我正在使用我的 AJAX 请求发送令牌。
我想有一些不匹配发生,因为我正在从我的子域遍历到我的域。
如何在我的主域和所有子域中对齐令牌,以免出现异常?
注意
所有 AJAX 路由都从
接收令牌<meta name="csrf-token" content="{{ csrf_token() }}">
将它附加到每个请求中
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
编辑
我把它放在session.php下
"domain" => "." . env('APP_URL'),
因为 cookie,尽管老实说我不确定它的作用
【问题讨论】:
-
移除 csrf 令牌
-
让我的应用受到 CSRF 攻击?
-
域和子域在同一个 laravel 安装?
-
是的,域路由在
web.php内完成 -
您是否在 AJAX 调用之后为
ajaxSetup委派事件?
标签: php ajax laravel cross-domain csrf