0

我需要使用 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............

我错过了什么吗?

4

0 回答 0