浏览器的 localstorage 完全运行在客户端,无法被 go 服务端直接访问;必须通过 http 请求头(如 authorization)或 cookie 显式传递 token,服务端才能接收、解析和验证。
在 Go Web 开发中,一个常见误区是认为后端能“主动读取”前端浏览器的 localStorage 或 sessionStorage。这是不可能的——它们是纯客户端 JavaScript API,运行在沙盒化的浏览器环境中,不参与 HTTP 协议传输,服务端(包括 Go 的 http.Handler)在任何阶段都无法直接访问这些存储。
要让 Go 后端使用前端持有的 JWT,必须由前端显式发送该
Token。主流做法有两种:
前端在发起 API 请求(如 fetch 或 axios)时,手动将 Token 注入请求头:
// 前端示例(JavaScript)
const token = localStorage.getItem('auth_token');
fetch('/api/profile', {
headers: {
'Authorization': `Bearer ${token}`
}
});Go 后端则从 r.Header.Get("Authorization") 提取并解析:
func protectedHandler(w http.ResponseWriter, r *http.Request) {
authHeader := r.Header.Get("Authorization")
if authHeader == "" {
http.Error(w, "Missing token", http.StatusUnauthorized)
return
}
// 提取 Bearer token
var tokenString string
if strings.HasPrefix(authHeader, "Bearer ") {
tokenString = authHeader[7:]
} else {
http.Error(w, "Invalid auth header format", http.StatusUnauthorized)
return
}
// 使用 github.com/golang-jwt/jwt/v5 验证
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
return []byte("your-secret-key"), nil // 生产环境请使用 RSA 或安全密钥管理
})
if err != nil || !token.Valid {
http.Error(w, "Invalid token", http.StatusUnauthorized)
return
}
// Token 有效,渲染受保护内容
tmpl.Execute(w, map[string]interface{}{"User": "Alice"})
}若你使用 Go 渲染 HTML(服务端渲染),可让前端在登录后将 JWT 写入 httpOnly: false 的 Cookie,并配合签名/加密保障完整性:
// Go 后端设置带签名的 Cookie(使用 gorilla/securecookie)
var s = securecookie.New(
securecookie.GenerateRandomKey(32), // hash key
securecookie.GenerateRandomKey(32), // block key(启用 AES 加密时需要)
)
func loginHandler(w http.ResponseWriter, r *http.Request) {
// ...验证用户凭据后生成 JWT
jwtToken := generateJWT(user)
// 将 JWT 存入加密 Cookie(客户端可读,但不可篡改)
encoded, err := s.Encode("token", map[string]string{"jwt": jwtToken})
if err == nil {
http.SetCookie(w, &http.Cookie{
Name: "auth",
Value: encoded,
Path: "/",
HttpOnly: false, // 允许 JS 读取(以便后续请求携带)
Secure: true, // 仅 HTTPS
SameSite: http.SameSiteLaxMode,
})
}
}前端可通过 document.cookie 读取并用于后续请求(或直接由浏览器自动携带)。
总之:不是“能不能”,而是“怎么传”。设计清晰的前后端协作契约(Token 放 Header 或 Signed Cookie),比试图突破同源限制更安全、更可持续。
# javascript
# java
# redis
# html
# js
# 前端
# git
# go
# github
# cookie
# golang
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Windows10如何更改鼠标灵敏度_Win10鼠标属性指针选项调节
如何使用Golang构建基础消息队列模拟_Golang消息发送与消费实现方法
Win11怎么关闭键盘按键音_Win11禁用打字声音反馈【教程】
Python网络日志追踪_请求定位解析【教程】
如何在网页无标准表格标签时高效提取结构化数据
Win11怎么关闭自动修复_跳过Win11开机自动修复循环【技巧】
Win11怎么关闭VBS安全性_Windows11提升游戏性能关闭虚拟化安全
MAC如何隐藏文件夹及文件_MAC终端命令隐藏与第三方工具加密【教程】
Win11怎么关闭边缘滑动手势_Windows11禁用触摸屏边缘操作
Win11怎么看电池循环次数_Win11笔记本电池寿命检测【命令】
如何使用Golang写入二进制文件_Golang io Write二进制写入示例
C#如何序列化对象为XML XmlSerializer用法
如何在包含多值的列中精准搜索指定演员?
PythonFastAPI项目实战教程_API接口与异步处理实践
Win11怎么设置默认浏览器Chrome_Windows11修改默认网页打开方式
短链接怎么用php还原_从基础原理到代码实现教学【详解】
VSC怎样用终端运行PHP_命令行执行脚本的步骤【教程】
php中作用域操作符能访问私有静态属性吗_访问权限限制【指南】
如何在Golang中捕获结构体方法错误_Golang方法返回error处理实践
Win11如何设置自动关机 Win11定时关机命令使用教程【技巧】
Win11怎么检查TPM2.0模块_Windows11受信任平台模块开启状态查询
php下载安装后swoole扩展怎么安装_异步框架支持【汇总】
如何在Golang中实现服务熔断与限流_Golang微服务容错与流控方法
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
Win10怎样安装Word样式库_Win10安装Word样式教程【步骤】
Win10电脑C盘红了怎么清理_Windows10系统盘深度瘦身指南
Win10如何卸载微软拼音输入法 Win10只保留一个输入法【教程】
Win11快速助手怎么用_Win11远程协助连接教程【工具】
使用类变量定义字符串常量时的类型安全最佳实践
Win10怎样安装Excel数据分析工具_Win10安装分析工具包步骤【教程】
Win10怎样清理C盘浏览器缓存_Win10清理浏览器缓存步骤【步骤】
Win11怎么关闭透明效果_Windows11个性化颜色关闭透明
Linux如何申请SSL免费证书_Linux下Certbot安装与Nginx自动续期【指南】
Python网页解析流程_html结构说明【指导】
Windows 10怎么录屏_Windows 10使用Xbox Game Bar录制屏幕视频教程
如何在 Go 中创建包含映射(map)的切片(slice)结构
如何使用正则表达式批量替换重复的 *- 模式为固定字符串
mac本地php环境如何开启curl_curl扩展启用与测试步骤详解【汇总】
Windows10系统怎么查看已安装更新_Win10控制面板卸载补丁
Windows怎样关闭开始菜单推荐广告_Windows关闭开始菜单推荐设置【步骤】
php下载安装选zip还是msi格式_两种安装包对比【教程】
如何高效获取循环末次生成的 NumPy 数组最后一个元素(无需额外循环)
如何在Golang中使用replace替换模块_指定本地或远程路径
如何在Golang中处理JSON字段缺失_Golangjson解析字段校验方法
Win10系统怎么查看网络连接状态_Windows10网络和共享中心
Win11玩游戏全屏闪退怎么办_Win11全屏优化禁用设置【教程】
XML的“混合内容”是什么 怎么用DTD或XSD定义
Windows 11怎么设置默认解压软件_Windows 11为ZIP/RAR文件指定默认打开程序
VSC怎么在PHP中调试MySQL_数据库交互排查技巧【教程】
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
2026-01-01
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。