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

使用HTTPURLResponse读取自定义响应头X-User-Signed失败求助

问题原因及解决方案

核心原因

你遇到的问题是跨域资源共享(CORS)的头暴露限制:浏览器开发者工具能捕获所有响应头,但客户端(比如你的URLSession请求)只能访问服务器明确允许暴露的头。自定义头X-User-Signed不在默认暴露的头列表里,所以URLSession无法读取,除非服务器配置了Access-Control-Expose-Headers字段。

解决方案

  1. 服务器端配置(必须步骤)
    让后端在响应中添加以下头:
Access-Control-Expose-Headers: X-User-Signed

如果有多个自定义头需要暴露,用逗号分隔:

Access-Control-Expose-Headers: X-User-Signed, X-Other-Custom-Header
  1. 代码优化建议
    不要直接通过allHeaderFields字典取值,改用HTTPURLResponse的value(forHTTPHeaderField:)方法,它会自动处理HTTP头的大小写问题,更可靠:
if let xUserSigned = response.value(forHTTPHeaderField: "X-User-Signed") {
    print("X-User-Signed: \(xUserSigned)")
}
  1. 验证方法
    可以用Charles或Wireshark抓包,确认响应中确实包含X-User-Signed和Access-Control-Expose-Headers这两个头,确保服务器配置生效。

内容的提问来源于stack exchange,提问作者Filip Čorba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:52:06