如何在 sveltekit 中提取 cookie

Sne*_*nek 4 cookies header typescript svelte sveltekit

我正在尝试提取从后端接收到的 sveltekit 中 cookie 的值,但我似乎无法找到访问 svelte 中 cookie 的方法,而且我正在使用 Typescript,如果可能的话,我不想直接访问 DOM。

到目前为止我已经尝试使用:

  • js-cookie
  • chatGPT anwear 完全不正确
  • 自从我在这里询问以来,互联网一直无法正常工作

set-cookie 标头显示在网络选项卡中,它不安全,也不是 httponly。请解释一下我如何从 sveltekit 打字稿访问它的值。

编辑:后端是 actix-web

已解决:我在 actix 端将域设置为 localhost,并将 cookie 设置为安全。

Dav*_*olf 5

我假设当你说后端时你指的是用 SvelteKit 编写的后端,因为 SvelteKit 是一个全栈框架。

\n

在 SvelteKit 中执行此操作的方法是在服务器加载函数中编写 cookie 逻辑:

\n
import * as db from \'$lib/server/database\';\nimport type { LayoutServerLoad } from \'./$types\';\n \nexport const load = (async ({ cookies }) => {\n  const sessionid = cookies.get(\'sessionid\');\n \n  return {\n    user: await db.getUser(sessionid)\n  };\n}) satisfies LayoutServerLoad;\n
Run Code Online (Sandbox Code Playgroud)\n

您可以对 执行同样的操作cookies.set(\xe2\x80\xa6)

\n\n
\n

如果您想从客户端 svelte 组件访问 Cookie 值,您可以通过服务器加载函数将其传递到您可以在组件中访问的数据中。

\n

+页面.server.ts

\n
import type { PageServerLoad } from \'./$types\';\n\nexport const load = (async ({ cookies }) => {\n  const tastyCookie = cookies.get(\'tastyCookie\');\n\n  return {\n    tastyCookie\n  };\n}) satisfies PageServerLoad;\n
Run Code Online (Sandbox Code Playgroud)\n

+页面.svelte

\n
<script lang="ts">\n  import type { PageData } from \'./$types\';\n\n  export let data: PageData;\n</script>\n\n<h1>{data.tastyCookie}</h1>\n
Run Code Online (Sandbox Code Playgroud)\n
\n

我认为您还应该能够从onMount客户端 svelte 页面上的钩子内部访问 cookie 字符串,但我强烈建议使用上面显示的方法,因为这是 Kit 的做事方式。

\n