【问题标题】:Laravel Sanctum - sanctum/csrf-cookie (204 "No content")Laravel Sanctum - sanctum/csrf-cookie(204“无内容”)
【发布时间】:2021-09-26 03:05:18
【问题描述】:

Laravel sanctum 让我有点头疼,因为我花了几个小时试图弄清楚为什么 sanctum/csrf-cookie 路由没有返回任何内容。最初相同的路由返回 404 未找到,但在添加 'prefix' => 'api/sanctum' config/sanctum.php 后,它似乎可以工作,只是它什么都不输出并且我的浏览器中没有设置 cookie。

这是我的一些代码

.env

SANCTUM_STATEFUL_DOMAINS=localhost:8080
SPA_URL=http://localhost:8080
SESSION_DOMAIN=localhost

--config/cors.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 回复 我还按照doucmentation 中的说明在 kernel.php 中添加了 api 中间件,但仍然不会设置 cookie。当我尝试向受圣所保护的另一条路线提出请求时,我 419 token mismatch。 我还运行了全新安装的 laravel php artisan optimize,清除了我的浏览器历史记录,检查了邮递员中的端点,但仍然相同 204 and 419 异常

【问题讨论】:

    标签: laravel vue.js cookies laravel-sanctum laravel-api


    【解决方案1】:

    我在同一个问题上苦苦挣扎了好几天,然后找到了一种可行的方法。 所以:

    '/sanctum/csrf-cookie' 路由成功时返回 204 响应,然后您必须发送带有凭据的 post 请求。我曾经得到一个 419 响应状态。

    所以在关注 laravel 文档之后,这是我添加的内容:

    1. SPA 确保将 withCredentials 标头设置为 true
    2. API

    .env

    SESSION_DRIVER=cookie
    SESSION_DOMAIN='.localhost'
    SANCTUM_STATEFUL_DOMAINS='localhost,127.0.0.1'
    

    .kernel.php

    添加中间件数组:\Illuminate\Session\Middleware\StartSession::class

    【讨论】:

      【解决方案2】:

      来自 HTTP 规范:

      HTTP 204 No Content 成功状态响应代码表示请求已成功,但客户端不需要离开其当前页面。例如,在为 wiki 站点实现“保存并继续编辑”功能时,可能会用到它。

      根据规范 204 是来自服务器的预期响应。

      【讨论】:

        猜你喜欢
        • 2020-09-02
        • 2020-07-02
        • 2022-01-08
        • 1970-01-01
        • 2020-09-20
        • 2020-09-10
        • 2021-04-05
        • 2021-07-19
        • 2020-08-20
        相关资源
        最近更新 更多