前提・実現したいこと
Swift から JWTトークン認証を使ったAPIをコールしたいです。
認証の必要がないAPIはコールできますが、認証が必要なAPIのコールで401が返ってきてしまう状況です。
よろしくお願いします。
発生している問題・エラーメッセージ
Status Code 401
が返ってきて、サーバサイドのエラーも Unauthorized
というメッセージを吐いています。
該当のソースコード
swift
1let url = URL(string: HOST + urlString) 2 3var request = URLRequest(url: url!) 4request.httpMethod = "GET" 5request.addValue("application/json", forHTTPHeaderField: "Content-Type") 6if let key = store.key { 7 request.addValue("JWT " + key.token, forHTTPHeaderField: "Authorization") 8} 9 10print(request.allHTTPHeaderFields) 11 12let task: URLSessionTask = URLSession.shared.dataTask(with: request) {(data, response, error) in 13 // 何かしらの実装 14} 15 16task.resume()
以下のように、ヘッダにトークン情報はちゃんと入っていました。
Optional(["Content-Type": "application/json", "Authorization": "JWT //トークン情報"])
試したこと
同じトークンを使って、 Chrome 拡張の API Tester で呼び出した場合はレスポンス 200 で、ちゃんと呼び出すことができました。
問題の切り分けのため、ncコマンドを使ったデバックを行いました。
また、その際、キーを hoge
、値を fuga
としたヘッダを追加したところ、こちらはヘッダに追加されていました。
$ nc -l 8000 GET {URL} HTTP/1.1 Host: localhost:8000 Content-Type: application/json hoge: fuga Accept: */* User-Agent: {クライアントエージェント名} Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: keep-alive
他にも、Accept
キーは通常通り書き換えが行えたため、本当に Authorization
キーのみが弾かれている状態です。
ここまで来ると、Xcodeの設定の問題なのかなとも思うのですが、調べても見つかりません。よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
バージョン情報
Xcode: 11.5
Swift: 5.2.4
回答1件
あなたの回答
tips
プレビュー