iOS - не удается добавить http-заголовок URLRequest - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь добавить заголовок http в URLRequest, который загружаю в WKWebView.

Я пробовал этот код:

    var urlRequest = URLRequest(url: URL(string: "url")!)
    urlRequest.addValue("value", forHTTPHeaderField: "key")
    self.viewerWebKit.load(urlRequest)

, а также это:

    var urlRequest = URLRequest(url: URL(string: "url")!)
    urlRequest.setValue("value", forHTTPHeaderField: "key")
    self.viewerWebKit.load(urlRequest)

Но когда я печатаю заголовки http с этим кодом:

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
    let headers = (navigationResponse.response as! HTTPURLResponse).allHeaderFields
    for (key,value) in headers {
        print("key \(key) value \(value)")
    }
    decisionHandler(.allow)
}

ничего не добавляется и не устанавливается.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

URLRequest неизменяемый, поэтому, если вы хотите добавить заголовок в этом запросе, вам нужно сделать его mutable.use это расширение для добавления заголовка.

extension URLRequest {

internal mutating func addHeaders() {

        let mutableRequest = ((self as NSURLRequest).mutableCopy() as? NSMutableURLRequest)!


            mutableRequest.setValue("your header", forHTTPHeaderField: "key")
            self = mutableRequest as URLRequest

        }
    }

}

Используйте, где вы хотите установитьЗаголовок:

request.addHeaders()
0 голосов
/ 25 октября 2018
optional func webView(_ webView: WKWebView, 
  decidePolicyFor navigationAction: WKNavigationAction, 
  decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)

Используйте эту функцию делегата.Вы можете найти заголовки запроса в navigationAction.request.

...