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

SvelteKit应用使用网络URL时Cookie无法存储认证Token问题

SvelteKit局域网IP访问时Cookie无法存储的解决办法

问题根源

用localhost访问时Cookie正常,但用192.168.1.20这类局域网IP登录时,浏览器不存储Token Cookie,核心原因是Cookie的domain属性未适配当前请求的IP地址。SvelteKit的event.cookies.set默认domain设置在IP访问场景下不匹配,导致浏览器拒绝保存Cookie。

修复代码

修改登录逻辑里的Cookie设置,显式配置domain: undefined,让浏览器自动适配当前请求的域名/IP:

// src/routes/login/+page.server.ts
event.cookies.set(TOKEN, token, {
  path: "/",
  domain: undefined, // 关键:让浏览器自动匹配当前访问的IP或域名
  httpOnly: true,    // 可选:提升安全性,防止XSS攻击
  secure: process.env.NODE_ENV === 'production', // 生产环境启用HTTPS时开启
  sameSite: 'lax'    // 可选:降低CSRF风险
})

为什么这样有效

  • domain: undefined会让浏览器根据当前请求的URL自动设置Cookie的domain,不管是localhost还是局域网IP都能正确匹配。
  • 如果硬编码domain为192.168.1.20,会导致localhost访问时无法读取Cookie,所以用undefined是更通用的方案。

验证步骤

  1. 修改代码后重启服务
  2. 用192.168.1.20:5173登录
  3. 打开浏览器开发者工具 → Application(或Storage)→ Cookies,检查是否存在Token对应的Cookie
  4. 在hooks.server.ts中添加console.log(token),确认钩子能正常读取到Token

内容的提问来源于stack exchange,提问作者Ölavur Nón

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:22:39