那里。我有一个非常奇怪的问题。问题在于,当我尝试发送PATCH请求服务器时,没有授权标头包含令牌。对于PUT请求也一样。想要嗅探并发现根本没有发送任何Authorization标头。而任何其他类型的请求都包含授权标头。首先想到了它的Alamofire框架特定问题,但是使用NSURLConnection请求和NSURLSession任务给了我相同的内容:没有授权标题就是SENT!
以下是我用于Alamofire的代码:
angular.element(window).on("load resize scroll", function() {
updateHeight();
});
function updateHeight(){
$timeout(function(){
var canvasHeight = angular.element('#chartCanvas').height();
table_height(canvasHeight);
});
}
// updateHeight on load
updateHeight();
以下是NSURLConnection的代码:
Alamofire.request(.PATCH, path, parameters: ["email":"new@mail.com"], encoding: .JSON, headers: ["Authorization":"token \ ((User.sharedUser().token)!)"]).validate().responseJSON { (response) in
if response.response?.statusCode == 200{
print("success")
}else{
print("Error")
}
}
答案 0 :(得分:3)
Authorization
标题是NSURLSession
为其自身目的保留的标题之一,并且可能会用自己的值覆盖 - 特别是如果您发送的内容看起来像正常HTTP身份验证。
您可以发送X-Authorization
标题吗?
答案 1 :(得分:2)
任何正在寻找 Alamofire 5(AF 5) 解决方案的人,这里是解决方案:
let headers: [String:String] = [...]
let params: [String: Any] = [...]
let url = URL(...)
let redirector = Redirector(behavior: Redirector.Behavior.modify({ (task, urlRequest, resp) in
var urlRequest = urlRequest
headers.forEach { header in
urlRequest.addValue(header.value, forHTTPHeaderField: header.key)
}
return urlRequest
}))
//use desired request func of alamofire and your desired enconding
AF.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers)
.responseJSON { response in
//handleDataResponse...
}.redirect(using: redirector)