如何在 Swift 应用程序中全局设置自定义 headers?

How to globally set custom headers in Swift app?

所以我有一个应用程序经常向我们 API 上的各种端点发出请求,并且每个请求几乎都有相同的自定义 header 随它发送。我想知道是否有一种方法可以使用 NSURLSessionConfiguration 全局设置自定义 header,如果可以...Swift 中的语法是什么,我应该把它放在哪里?应用程序代理?我已经做了一些搜索,但似乎找不到一个很好的例子。这是一种不好的做法吗?不可行?

编辑:

我正在为 request/response 使用 Alamofire,所以我需要一些东西来全局设置它们,以便该库(以及其他碰巧使用 NSURLSession 的库)将发送 header默认情况下。

我们在 README 中有此记录。

var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
defaultHeaders["DNT"] = "1 (Do Not Track Enabled)"

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = defaultHeaders

let manager = Alamofire.Manager(configuration: configuration)

那么你需要使用新的 manager 而不是全局 Alamofire 单例。

manager.request(.GET, "https://httpbin.org/get")
       .responseJSON { _, _, result in
           debugPrint(result)
       }

这会将 DNT header 附加到通过此 manager 实例发送的每个请求。

Each Manager instance has its own internal NSURLSession which also has its own configuration. Therefore, this override only works for this Manager instance. If you need these headers on a different Manager instance, you'll have to set it up the same way.