如果页面仅加载一次,如何在 SPA 中获取 Laravel cookie

Posted

技术标签:

【中文标题】如果页面仅加载一次,如何在 SPA 中获取 Laravel cookie【英文标题】:How to fetch Laravel cookie in an SPA if page only loads once 【发布时间】:2021-08-23 12:34:48 【问题描述】:

我在 Laravel 8 后端运行 Vue3 SPA。 我正在通过中间件为未经身份验证的用户设置 cookie。 我可以在 Chrome 的开发工具 Sotrage > Cookies 中看到 cookie 及其值。 但我无法在 Vue 应用程序中读取它的值,可能是因为它是在创建 Vue SPA 的初始页面加载之后设置的。

知道如何访问该 cookie 吗?

【问题讨论】:

@tony19 谢谢你想通了。原来 Laravel 附带了一个仅限 HTTP 的 cookie 设置。 【参考方案1】:

从 cmets 确定,您启用了仅 HTTP cookie,这会阻止客户端 javascript 访问 cookie。

仅 HTTP cookie 是 intended for security purposes,但您可以使用 session-set-cookie-params 禁用它:

<?php
  $options = array("httponly" => false);
  session_set_cookie_params($options);
  session_start();
?>

或在laravel/config/session.php

<?php
  //...
  return [
    'http_only' => false
  ]
?>

【讨论】:

以上是关于如果页面仅加载一次,如何在 SPA 中获取 Laravel cookie的主要内容,如果未能解决你的问题,请参考以下文章

使用Laravel 和 Vue 构建一个简单的SPA

单页面应用SPA和多页面应用MPA

进一步优化SPA的首屏打开速度(模块化与懒加载) by 嗡

表单自动仅提交一次并重新加载相同的页面

Vue路由

Vue路由