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

Swift Alamofire特定请求无法携带Bearer Authorization头问题

问题:部分请求丢失Authorization请求头

请求构造代码

AF.request(
    baseURL.appendingPathComponent(path),
    method: method,
    parameters: parameters,
    encoding: encoding,
    headers: .init([.authorization(bearerToken: token)]),
    interceptor: nil,
    requestModifier: nil
)

测试的请求路径

  • "/api/v1/languages"
  • "/api/v1/speak"
  • "/api/v1/courses/\(id)"(id为Int类型)
  • "/api/v1/courses/1"

核心问题

前两个请求能正常携带Authorization头,但后两个请求不行。后两个请求的originalRequest包含Authorization头,但currentRequest中该头丢失。

调试代码

print("debug1", request?.lastTask?.currentRequest, request?.lastTask?.currentRequest?.headers)
print("debug2", request?.lastTask?.originalRequest, request?.lastTask?.originalRequest?.headers)

调试结果

  • 仅前两个请求的currentRequest包含Authorization头
  • 所有请求的originalRequest均包含Authorization头

额外测试路径及结果

  • "/api/v1/70":存在Authorization头
  • "/api/v1/courses/70":无Authorization头
  • "/api/v1/courses/courses/70":存在Authorization头
  • "/api/v1/episodes/70":无Authorization头
  • "/api/v1/episodes/episodes/70":存在Authorization头

可能原因及解决建议

  1. 检查全局拦截器/配置:即使当前请求传了interceptor: nil,也可能项目中配置了全局的请求拦截器,在特定路径下移除了Authorization头,排查全局的Alamofire配置代码。
  2. 强制在requestModifier中添加头:绕过内部可能的修改逻辑,手动在请求修改器中添加Authorization头:
requestModifier: { urlRequest in
    urlRequest.headers.add(.authorization(bearerToken: token))
}
  1. 排查重定向问题:Alamofire默认不会在重定向请求中携带Authorization头,检查是否这些异常请求返回了3xx重定向状态码;若需要携带,需配置重定向策略,自定义处理重定向时的请求头。
  2. 排除Alamofire问题:用原生URLSession构造相同路径的请求测试,看是否同样丢失请求头,以此确认问题是否出自Alamofire的处理逻辑。

内容的提问来源于stack exchange,提问作者Andrei Krotov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:42:11