iOS - 无法添加 URLRequest 的 http header

iOS - not able to add http header of URLRequest

我正在尝试将 http header 添加到我正在 WKWebView 中加载的 URLRequest。

我试过这段代码:

    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 headers 时:

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)
}

未添加或设置任何内容。我做错了什么?

optional func webView(_ webView: WKWebView, 
  decidePolicyFor navigationAction: WKNavigationAction, 
  decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)

使用这个委托函数。您可以在 navigationAction.request 中找到 headers 的请求。

URLRequest 不可变所以如果你想在那个请求中添加 header 你需要让它 mutable.use 这个扩展来添加 header .

extension URLRequest {

internal mutating func addHeaders() {

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


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

        }
    }

}

在你想设置的地方使用Header:

request.addHeaders()