我试图通过JWT授权发出请求,服务器正在使用Python / Flask-Restful。该API适用于Postman,因此我想我的IOS代码肯定有问题。服务器返回错误,显示
“需要授权。请求不包含访问令牌”,
我正在使用以下代码从IOS发出请求。
func GetUserData(username: String, accesstoken: String,completion: @escaping (_ result: UserDataModel) -> Void){
let url = URL(string: "http://********/****/\(****)")
var request = URLRequest(url: url!)
request.httpMethod = "GET"
request.addValue("Authorization", forHTTPHeaderField: accesstoken)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
if let response = response as? HTTPURLResponse{
if response.statusCode != 200 {
print("Server Error When Update User Data")
} else {
if let data = data {
do {
******
completion(Data)
}
catch {
print(error)
}
}
}
}
}.resume()
}
我不知道怎么回事,有帮助吗?
答案 0 :(得分:0)
您似乎正在添加标题:
Bearer base64junk: Authorization
您何时需要:
Authorization: Bearer base64junk
您只需要向后addValue(_:forHTTPHeaderField:)
的参数。您要改为:
request.addValue(accesstoken, forHTTPHeaderField: "Authorization")
如果您阅读该行代码(如英语句子)(“标题字段访问令牌的值授权”?),这应该很明显。将来,您还可以使用Charles Web代理之类的工具来拦截您的请求,并验证它们是否确实按照您的期望形成。