Swift中如何获取HTTP请求响应头及Cookie、授权令牌?
你可以通过URLSession实现需求,下面是两种适配不同Swift版本的常用写法:
方式一:传统DataTask(兼容Swift 5.5之前版本)
import Foundation // 替换为你的目标接口完整URL guard let url = URL(string: "https://url.com") else { print("无效的URL格式") return } let task = URLSession.shared.dataTask(with: url) { _, response, error in // 处理请求错误 if let error = error { print("请求失败:\(error.localizedDescription)") return } // 确认响应为HTTP类型 guard let httpResponse = response as? HTTPURLResponse else { print("非HTTP协议响应") return } // 提取Set-Cookie字段(接口返回的Cookie通常存在这里) if let cookieStr = httpResponse.allHeaderFields["Set-Cookie"] as? String { print("获取到的Cookie:\(cookieStr)") } // 提取Authorization Token(如果接口返回在Authorization字段) if let authToken = httpResponse.value(forHTTPHeaderField: "Authorization") { print("获取到的Authorization Token:\(authToken)") } } task.resume()
方式二:Async/Await(Swift 5.5+,语法更简洁)
import Foundation func fetchHeaders() async { // 替换为你的目标接口完整URL guard let url = URL(string: "https://url.com") else { print("无效的URL格式") return } do { let (_, response) = try await URLSession.shared.data(from: url) guard let httpResponse = response as? HTTPURLResponse else { print("非HTTP协议响应") return } // 提取Cookie if let cookieStr = httpResponse.allHeaderFields["Set-Cookie"] as? String { print("获取到的Cookie:\(cookieStr)") } // 提取Authorization Token if let authToken = httpResponse.value(forHTTPHeaderField: "Authorization") { print("获取到的Authorization Token:\(authToken)") } } catch { print("请求失败:\(error.localizedDescription)") } } // 调用异步函数需在异步上下文(比如SwiftUI的Task、UIKit的async方法内) // await fetchHeaders()
注意点
- 接口返回的Cookie一般在
Set-Cookie字段,多个Cookie用分号分隔 - 如果Token存在于自定义头(比如
X-Auth-Token),直接替换value(forHTTPHeaderField:)中的字段名即可 - 必须使用完整URL(包含http/https协议)
内容的提问来源于stack exchange,提问作者ayelvs
相关产品推荐
相关产品推荐

