为何浏览器可见HttpResponse响应头,代码中却无法访问?
问题解决:自定义响应头客户端无法访问的原因及修复
这是CORS跨域限制导致的核心问题:
浏览器在处理跨域请求时,默认只允许客户端读取「简单响应头」(如Content-Type、Cache-Control等)。你自定义的auth-token、refresh-token属于非简单响应头,必须在服务端明确配置允许暴露给前端,否则浏览器会在把响应交给JS代码前过滤掉这些头——这就是为什么Network面板能看到完整响应头,但代码里读不到的原因。
修复步骤(针对Ktor服务端)
- 确保服务端已安装并配置CORS插件,在你的Ktor应用配置中添加暴露自定义头的规则:
install(CORS) { // 替换为你的前端实际域名(比如本地开发的http://localhost:5173) allowHost("http://localhost:5173") allowCredentials = true // 明确指定要暴露给前端的自定义响应头 exposeHeaders(listOf("auth-token", "refresh-token", "id")) }
- 保持你现有注册接口的header设置不变,重新启动服务即可。
验证
修改完成后,再次触发注册请求,客户端代码就能正常读取auth-token和refresh-token响应头了。
内容的提问来源于stack exchange,提问作者bartek1009x
相关产品推荐
相关产品推荐

