Swift中向WebService传递Header(Token)失败,请求代码排查协助
排查Token未送达WebService的问题
嘿,我一眼就发现了一个大概率导致问题的点——你的请求头字段名拼写错了!
1. 核心问题:Authorization字段拼写不完整
你的代码里写的是"Authorizatio...",明显没写完,HTTP标准的认证头字段名是Authorization,这绝对是Token没被服务器接收到的关键原因之一。
修正后的代码示例
let token = "eyJ0enssnsuwew" // 用guard let安全解包URL,避免隐式解包的潜在崩溃 guard let url = URL(string: "http://webservice") else { print("无效的URL地址") return } var request = NSMutableURLRequest(url: url) request.httpMethod = "POST" request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") // 修正字段名,确保完整拼写Authorization request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") // 补充发送请求的示例(如果你的代码里没写全的话) let task = URLSession.shared.dataTask(with: request as URLRequest) { data, response, error in if let error = error { print("请求错误:\(error)") return } // 处理响应逻辑... } task.resume()
2. 其他可能的排查方向
如果修正拼写后还是没解决问题,可以从这几个方向继续排查:
- 抓包验证实际请求:用Charles、Wireshark或者Xcode的Network Inspector抓包,确认发送的请求里是否真的包含了
Authorization头——有时候代码写了,但框架或代理可能会修改/移除请求头。 - 检查URLSession配置:如果你自定义了
URLSessionConfiguration,确认没有配置会自动覆盖或移除认证头的逻辑。 - 服务器端解析逻辑:确认服务器端是否正确读取了
Authorization头(虽然HTTP头不区分大小写,但严格匹配标准字段名更稳妥),有没有拦截认证头的中间件(比如反向代理)。 - Token格式验证:确保
Bearer前缀后面没有多余的空格,Token本身没有拼写错误或过期。
先把拼写错误修正后测试一下,这应该能解决大部分问题,如果还有疑问,欢迎补充更多细节~
内容的提问来源于stack exchange,提问作者Russel Ramirez
相关产品推荐
相关产品推荐

