iOSアプリを作っているときに、認証情報を次のWebViewへ持たせるときに詰まったので、その対処法を書きます。
認証を行った段階で、サーバから返答されるCookieを保存し、WebViewに渡します。
通信にはAlamofireを使っています
Alamofire.request("<url>",parameters: params)
.responseString { response in
let cookies = HTTPCookie.cookies(withResponseHeaderFields: response.response?.allHeaderFields as! [String : String], for: (response.response?.url!)!)
for i in 0 ..< cookies.count {
let cookie = cookies[i]
HTTPCookieStorage.shared.setCookie(cookie)
}
}
let authUrl = URL(string: "認証URL")
let url = URL(string: "ロードしたいURL")
var request = URLRequest(url: url)
let cookies = HTTPCookieStorage.shared.cookies(for: authUrl! as URL)
let header = HTTPCookie.requestHeaderFields(with: cookies!)
// Cookieをセットする
request.allHTTPHeaderFields = header
// webViewをロードする
webView.loadRequest(request as URLRequest)