【问题标题】:How do a make a cookie in Laravel and specify the SameSite attribute (Lax, None, Strict)?如何在 Laravel 中制作 cookie 并指定 SameSite 属性(Lax、None、Strict)?
【发布时间】:2021-08-20 01:31:30
【问题描述】:

我目前正在设置这样的 cookie(在中间件中):

cookie()->queue("loginToken", $loginToken, 60*24*365*10);

如何指定 SameSite = None?

我正在使用 Laravel 8。

【问题讨论】:

    标签: laravel cookies laravel-8 samesite


    【解决方案1】:

    cookie 函数声明为:

    function cookie($name = null, $value = null, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)
    

    queue只是转发参数,所以你可以这样做:

    cookie()->queue("loginToken", $loginToken, 60*24*365*10, null, null, null, true, false, 'None');
    

    【讨论】:

      【解决方案2】:

      这就是我所做的。请记住,这是在中间件的句柄函数中。

          $response = $next($request);
      
          // https://symfony.com/doc/current/components/http_foundation.html#setting-cookies
          // https://github.com/symfony/symfony/blob/5.3/src/Symfony/Component/HttpFoundation/Cookie.php
          $cookie = \Symfony\Component\HttpFoundation\Cookie::create("loginToken")
              ->withValue($loginToken)
              ->withExpires(strtotime("+12 months"))
              ->withSecure(true)
              ->withHttpOnly(true)
              ->withSameSite("strict")
              ;
      
          $response->headers->setCookie($cookie);
      

      【讨论】:

        【解决方案3】:

        在 config/session.php 中

        'same_site' => "none",
        

        【讨论】:

        • 我认为“none”需要用引号括起来,因为它应该是一个字符串。
        • 这很接近,但我认为这不是正确的答案。这只会为会话 cookie 设置 SameSite 设置,而不是我想要设置的任何自定义 cookie。
        • 出于某种原因没有为我改变任何东西。仍然遇到同样的错误
        猜你喜欢
        • 2021-08-21
        • 1970-01-01
        • 1970-01-01
        • 2020-05-16
        • 2022-01-04
        • 2019-04-02
        • 2020-05-23
        • 2020-05-01
        • 2021-07-22
        相关资源
        最近更新 更多