JWT认证:设置Authorization Bearer Token后无法访问其他接口排查
问题分析与解决方案
1. 变量名笔误(核心错误)
你的代码里生成Token的变量是token,但设置响应头时误用了未定义的TokenString,这会导致Authorization头的值仅为Bearer (空Token),甚至可能引发运行时错误。
修复代码:
// 将 TokenString 替换为实际生成的 token 变量 w.Header().Add("Authorization", "Bearer "+token)
2. 跨域场景下暴露响应头
如果前端与后端是跨域部署,浏览器默认会限制前端读取Authorization这类非简单响应头。需要在登录接口的响应中添加Access-Control-Expose-Headers头,允许前端获取该字段:
// 在设置 Authorization 头之后添加 w.Header().Add("Access-Control-Expose-Headers", "Authorization")
3. 前端需主动携带Token
登录接口返回的Authorization头是给前端保存用的,浏览器不会自动在后续请求中携带这个头。前端需要:
- 从登录接口的响应头中提取
Authorization的值 - 保存到本地(如
localStorage或sessionStorage) - 在请求其他需要授权的接口时,手动在请求头中添加
Authorization: [保存的完整Token串]
验证方式
修复后,可通过Postman测试:先调用登录接口,查看响应头是否正确返回Authorization: Bearer [有效Token];再携带该头请求其他接口,检查后端是否能通过r.Header.Get("Authorization")获取到值。
内容的提问来源于stack exchange,提问作者Venukishore.R
相关产品推荐
相关产品推荐

