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

Swift中如何获取HTTP请求响应头及Cookie、授权令牌?

在Swift中获取HTTP响应头(Cookie与Authorization Token)

你可以通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:54:53