JWT已发出请求,但它表明该请求不包含访问令牌

时间:2018-07-11 03:12:26

标签: swift jwt

我试图通过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()
    }

我不知道怎么回事,有帮助吗?

1 个答案:

答案 0 :(得分:0)

您似乎正在添加标题:

Bearer base64junk: Authorization

您何时需要:

Authorization: Bearer base64junk

您只需要向后addValue(_:forHTTPHeaderField:)的参数。您要改为:

request.addValue(accesstoken, forHTTPHeaderField: "Authorization")

如果您阅读该行代码(如英语句子)(“标题字段访问令牌的值授权”?),这应该很明显。将来,您还可以使用Charles Web代理之类的工具来拦截您的请求,并验证它们是否确实按照您的期望形成。