2

How can I see the response headers from a WKWebView loadRequest ?

eg

let url = NSURL(string: "http://www.anywebsite.com")!
let urlRequest = NSURLRequest(URL: url)
wkWebView.loadRequest(urlRequest)

then print the headers in the response.

Agreensh
  • 1,305
  • 1
  • 12
  • 15

2 Answers2

3

You have to assign wkWebView.navigationDelegate.

In the navigationDelegate's methods that provide a WKNavigationResponse, you can cast navigationResponse.response as a NSHTTPURLResponse to access navigationResponse.response.allHeaderFields.

kfix
  • 628
  • 4
  • 12
  • WKNavigationDelegate doesn't have any method with WKNavigationResponse – mtet88 Oct 28 '16 at 13:41
  • optional func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) https://developer.apple.com/reference/webkit/wknavigationdelegate/1455643-webview – kfix Nov 10 '16 at 16:49
0

Swift 5

    // MARK: - WKNavigationDelegate

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse) async -> WKNavigationResponsePolicy {
    let URLResponse = navigationResponse.response as? HTTPURLResponse
    URLResponse?.allHeaderFields.forEach({ key, value in
        print("decidePolicyFor key: ", key)
        print("decidePolicyFor value: ", value)
    })
    
    return .allow
}
oskarko
  • 3,382
  • 1
  • 26
  • 26