小编Vis*_*kar的帖子

如何在URLSession中的HTTP标头中为'Authorization'设置'Token xxxxxxxxxx'

我正在使用的后端API需要一个令牌Authorization ,以此格式发送每个针对HTTP头密钥的请求- Token xxxxxxxxxx.

现在,我正在做以下事情.

var getRequest = URLRequest(url: url)
getRequest.addValue("Token xxxxxxxx", forHTTPHeaderField: "Authorization")
Run Code Online (Sandbox Code Playgroud)

这有时会起作用,有时候会Authorization在发出请求时剥离标题字段.我使用Charles代理检查了这个.

Apple的文档说明如下.

NSURLSession对象旨在为您处理HTTP协议的各个方面.因此,您不应修改以下标头:授权,连接,主机,WWW-身份验证

作为解决方案,许多人建议使用didReceiveAuthenticationChallengeURLSession 的委托方法.

在这里,您需要传递一个URLSession.AuthChallengeDisposition实例来说明您希望如何响应质询,并URLCredential传递一个实例来传递凭据以响应身份验证质询.

我不知道如何以及是否可以创建URLCredential将为Token xxxxxxxx标题字段添加的实例Authorization.

谁有更多的知识,请帮助我如何解决这个问题?

PS - 这个问题中提到的所有代码都在Swift 3中. 这个问题提出了类似于我的问题.但是,那里给出的答案对我不起作用.并且,在有关Apple不允许Authorization添加标题的问题下提出的一些问题没有得到答复.

编辑:

发布相关代码.

var getRequest = URLRequest(url: url)
getRequest.httpMethod = "GET"
getRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
getRequest.addValue("application/json", forHTTPHeaderField: "Accept")
let token = DataProvider.sharedInstance.token
getRequest.addValue("Token \(token)", forHTTPHeaderField: "Authorization")
let getTask = URLSession.shared.dataTask(with: getRequest) { (data, response, …
Run Code Online (Sandbox Code Playgroud)

ios nsurlsession nsurlsessionconfiguration swift

4
推荐指数
1
解决办法
2716
查看次数