我正在从子域到主域发出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'),
因为cookies,即使老实说我也不确定它是做什么
答案 0 :(得分:0)
跨多个域的会话共享..... 可以进行调整。要在所有子域中提供cookie,您需要将其分配给根域。
session.cookie_domain = ".example.com"
就我个人而言,我会推荐一种不同的方法(但也取决于我不能完全了解你的问题的其他因素......)
从/向同一子域执行ajax调用(受CSRF中间件保护,标准CSRF用法) 在控制器上执行服务器到服务器后端调用您的主域(例如curl_exec)
服务器到服务器的呼叫不可见,您可以保护它...例如,在网络级别,或者如果两个域通过互联网进行通信,则添加Oauth服务器。