【问题标题】:iOS - not able to add http header of URLRequestiOS - 无法添加 URLRequest 的 http 标头
【发布时间】:2018-10-25 13:26:23
【问题描述】:

我正在尝试将 http 标头添加到我正在 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 标头时:

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

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

【问题讨论】:

  • 您正在检查响应标头,它们不必与响应标头相同。所以如果你想检查你设置的headers,我建议使用像Charles这样的代理工具,使用起来相当简单。
  • 啊,我明白了。会试试的,谢谢。

标签: ios swift url request wkwebview


【解决方案1】:
optional func webView(_ webView: WKWebView, 
  decidePolicyFor navigationAction: WKNavigationAction, 
  decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)

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

【讨论】:

    【解决方案2】:

    URLRequest 不可变,因此如果您想在该请求中添加标头,则需要使其可变。使用此扩展来添加标头。

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

    【讨论】:

    • 我不知道。我应该在哪里添加该扩展程序?哪个文件?
    • 您可以在同一个文件中添加。在文件末尾添加此代码。
    • 它给了我错误:“声明仅在文件范围内有效”
    • 啊,我明白了。我必须在课堂之外。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2021-05-05
    • 1970-01-01
    • 2015-05-13
    • 2011-09-13
    相关资源
    最近更新 更多