我正在从子域到主域发出AJAX请求.我已经设置了CORS,以便子域自动附加到允许的域列表中.我收到419(未知状态)错误,并在转储错误后发现我得到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,您需要将其分配给根域.
session.cookie_domain = ".example.com"
就个人而言,我会推荐一种不同的方法(但也取决于其他因素,我对你的问题没有全面的了解……)
从/向同一子域执行ajax调用(受CSRF中间件保护,标准CSRF用法)
在控制器上执行服务器到服务器后端调用您的主域(例如curl_exec)
服务器到服务器的呼叫不可见,您可以保护它…例如,在网络级别或通过添加Oauth服务器,如果两个域通过Internet进行通信.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。