iOS、WebKitを使ったWebViewのリダイレクトレスポンス(302,301)の時のヘッダを取得したい
WebKitのWebViewでサーバアプリの画面を表示するiOSのアプリを開発しております。WebView内でリダイレクトしたときにリダイレクト元(ステータスコード302の時)のレスポンスヘッダをiOSアプリの処理で利用したいのですが、下記のwebView(WKNavigationResponse)メソッドはリダイレクト先のレスポンスをハンドリングすることができません。
どのようにすればリダイレクト元のレスポンスを取得することが可能でしょうか。
もしくは、そもそもリダイレクト元のレスポンスを取得すること自体ができないのでしょうか。
該当のソースコード
swift
1 2func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { 3 4 if let urlStr = navigationAction.request.url?.absoluteString{ 5 LogUtil.log("WebView load url: (urlStr)") 6 } 7 8} 9func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: 10 @escaping(WKNavigationResponsePolicy) -> Void){ 11 12 LogUtil.log("check X-AUTHENTICATION-TOKEN") 13 if(response.allHeaderFields["X-AUTHENTICATION-TOKEN"] != nil){ 14 let tokens = response.allHeaderFields["X-AUTHENTICATION-TOKEN"] ?? "" 15 LogUtil.log("get tokens=(tokens)") 16 } 17 18 } 19 decisionHandler(.allow) 20}
試したこと
上記のコードでリダイレクトしたところ下記のようなログが出力されました。webView(WKNavigationAction)は2回呼ばれたもののWebViewは(WKNavigationResponse)一度しか呼ばれませんでした。
apapi:: WebView load url: http://localhost:8080/webapp/login apapi:: WebView load url: http://localhost:8080/webapp/top apapi:: WebView NavigationResponse HTTP Status Code: 200 apapi:: check X-AUTHENTICATION-TOKEN TOKENS
補足情報(FW/ツールのバージョンなど)
・swift4
・xCode10.1
あなたの回答
tips
プレビュー