我没有使用laravel默认提供的vue 2设置.相反,我有vue应用程序和laravel api后端的两个分隔文件夹.
vue应用程序位于laravel项目文件夹之外.
vue应用程序位于laravel项目文件夹之外.
在这种情况下,我该如何实施CSRF?
这就是我想要做的事情请告诉我这是否可以正常工作或有更好的方法来做..
1.在vue应用程序中使用一些随机长字符串设置cookie.
2.在每个api调用中,确保正在发送cookie.
3.在laravel后端,从请求中获取此令牌.
4.从cookie本身获取令牌.
5.匹配两个cookie,如果匹配则假设CSRF有效.
提前致谢..
解决方法
我很困惑,但我通过询问社区找到答案.
只需看看Laravel CSRF document,框架将XSRF-TOKEN存储为cookie的关键.你需要做的是从cookie中获取XSRF-TOKEN,然后将令牌设置为带有X-XSRF-TOKEN的头部的一部分:key_from_cookie,Laravel将decrypt the key作为CSRF令牌照常使用.
照明/基金/ HTTP /中间件/ VerifyCsrfToken.PHP
/** * Get the CSRF token from the request. * * @param \Illuminate\Http\Request $request * @return string */ protected function getTokenFromRequest($request) { $token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN'); if (! $token && $header = $request->header('X-XSRF-TOKEN')) { $token = $this->encrypter->decrypt($header); } return $token; }
> Laravel CSRF reference
> Laravel resolve X-XSRF-TOKEN
source