You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Astro前端matter中fetch后无法访问Cookie问题求助

Astro 环境信息

Astro                    v4.4.15
Node                     v18.18.0
System                   Windows (x64)
Package Manager          pnpm
Output                   server
Adapter                  @astrojs/cloudflare
Integrations             @astrojs/tailwind
                         @qwikdev/astro
                         astro-compressor
                         @astrojs/react

问题描述

已启用Astro SSR模式,相关代码如下:

页面组件代码(index.astro)

---
import Layout from "@layouts/Layout.astro";
import { generateCSRFToken } from "@modules/common";

const csrfToken = await generateCSRFToken();

const res = await fetch(import.meta.env.PUBLIC_DOMAIN + "/api/data", {
  headers: {
    "X-CSRF-Token": csrfToken,
  },
});
const result = await res.json();
---

<Layout title="Welcome to Astro.">
  <section>
result : {result}
  </section>
</Layout>

CSRF Token生成API路由代码

import type { APIRoute } from "astro";
import CryptoJS from "crypto-js";
import { setCookie } from "@modules/common";

export const GET: APIRoute = async ({ cookies, request }) => {
  const csrfToken = CryptoJS.lib.WordArray.random(36).toString(
    CryptoJS.enc.Base64
  );

  setCookie(cookies, "X-CSRF-Token", csrfToken, false, "/", 1);

  return new Response(JSON.stringify({ csrfToken }), {
    status: 200,
  });
};

核心问题

在上述API的GET请求处理逻辑中,使用cookies.get可以正常获取到Cookie值,但在页面组件的前端matter(即组件顶部的---代码块内)或middleware.ts中调用cookies.get,却无法获取到刚设置的Cookie。目前临时解决方法是将fetch请求移至script标签内,此时就能正常访问设置后的Cookie值。

需求

希望在页面前端matter中发起GET请求设置Cookie后,能够直接在前端matter中访问到该Cookie的值。

内容的提问来源于stack exchange,提问作者Chi Hao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:12:36