Laravel sancutum对我来说有点头痛,因为我花了几个小时试图找出为什么sanctum/csrf-cookie
路由返回没有内容。最初相同的路由返回404没有找到,但添加'prefix' => 'api/sanctum'
config/sancutum. php后,它似乎工作,除了它什么也不输出,没有cookie设置在我的浏览器中。
"这是我的一些密码"
- .环境*
SANCTUM_STATEFUL_DOMAINS=localhost:8080
SPA_URL=http://localhost:8080
SESSION_DOMAIN=localhost
- --配置文件/相关文件php*
'paths' => [
'api/*',
'login',
'logout',
'register',
'user/password',
'forgot-password',
'reset-password',
'sanctum/csrf-cookie',
'user/profile-information',
'email/verification-notification',
],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
- axios **
export const authClient = axios.create({
baseURL: process.env.VUE_APP_API_URL,
withCredentials: true, // required to handle the CSRF token
});
做了所有这些之后,如果我尝试使用
axios.get('/sanctum/csrf-cookie').then(response => {
// Login...
});
我得到204 no content
响应我也已经添加了api中间件在kernel.php中作为指示在docmentation,但仍然不会设置cookie.当我尝试使请求到另一个路由保护的sancutum i 419 token mismatch
.我也已经运行了一个新安装的laravel,php artisan optimize
,清除我的浏览器历史,检查端点在postman,但仍然是相同的204 and 419
异常
4条答案
按热度按时间k97glaaz1#
我在同一个问题上挣扎了好几天,然后找到了一种有效的方法。所以:
'/sanctum/csrf-cookie'
路由成功时返回204响应,然后您必须发送带有凭据的post
请求。我曾经获得419响应状态。所以在遵循laravel docs之后,这里是我补充的:
withCredentials
标头设置为true
1.美国石油协会
.环境
.kernel.php
添加到中间件阵列中:
\Illuminate\Session\Middleware\StartSession::class
wh6knrhe2#
嘿,我不知道你是否找到了答案,但是那个请求意味着有一个空的响应体,你的CSRF令牌在响应的头中是可用的;D级
qgelzfjb3#
来自HTTP规范:
HTTP 204“无内容”成功状态响应代码指示请求已成功,但客户端不需要导航离开其当前页面。例如,在为Wiki网站实现“保存并继续编辑”功能时,可能会使用此响应代码。
根据规范204是期望的来自服务器的响应。
icnyk63a4#
可以插入
bootstrap.js
文件