我需要使用 Laravel 作为 API 和一个单独的反应应用程序作为前端。
如果我设置不记名令牌,并在标头中传递给 Laravel,一切正常,但我想使用 cookie 会话。
域是:frontend.appname.local (react) 和 development.appname.local (laravel)
拉拉维尔:.env:
SESSION_DRIVER=cookie
SESSION_LIFETIME=120
SESSION_DOMAIN=.appname.local
SANCTUM_STATEFUL_DOMAINS=development.appname.local
cors.php:
'supports_credentials' => true,
内核.php:
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
反应:
axiosClient.get(constants.CSRF_URL).then((csrf_response) => {
axiosClient.defaults.withCredentials = true;
axiosClient
.post("/login", {
email,
password,
})
.then((response) => {}
)
})
其中 CSRF_URL =http://development.appname.local/sanctum/csrf-token
登录没问题,cookie 似乎是在我的浏览器中设置的(我可以在应用程序选项卡中看到它)。
当我尝试执行另一个发布请求时发生错误,并且我得到 401 未经授权。cookie 似乎是在这个新的 post 请求中发送的:
Cookie: XSRF-TOKEN=eyJpdiI6IkJR............
我错过了什么吗?