Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-无法添加URL请求的http标头_Ios_Swift_Url_Request_Wkwebview - Fatal编程技术网

iOS-无法添加URL请求的http标头

iOS-无法添加URL请求的http标头,ios,swift,url,request,wkwebview,Ios,Swift,Url,Request,Wkwebview,我正在尝试将http头添加到URLRequest,我正在WKWebView中加载它 我尝试了以下代码: var urlRequest = URLRequest(url: URL(string: "url")!) urlRequest.addValue("value", forHTTPHeaderField: "key") self.viewerWebKit.load(urlRequest) func webView(_ webView: WKWebView, decid

我正在尝试将http头添加到URLRequest,我正在WKWebView中加载它

我尝试了以下代码:

    var urlRequest = URLRequest(url: URL(string: "url")!)
    urlRequest.addValue("value", forHTTPHeaderField: "key")
    self.viewerWebKit.load(urlRequest)
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)
}
还有:

    var urlRequest = URLRequest(url: URL(string: "url")!)
    urlRequest.setValue("value", forHTTPHeaderField: "key")
    self.viewerWebKit.load(urlRequest)
但当我使用以下代码打印http头时:

    var urlRequest = URLRequest(url: URL(string: "url")!)
    urlRequest.addValue("value", forHTTPHeaderField: "key")
    self.viewerWebKit.load(urlRequest)
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中找到请求的标题


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

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

        }
    }

}
在要设置标题的位置使用:

request.addHeaders()

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

        }
    }

}
在要设置标题的位置使用:

request.addHeaders()

您正在检查响应头,它们不必与响应头相同。所以如果你想检查你设置的标题,我建议使用一个代理工具,比如Charles,使用起来很简单。啊,我明白了。我会试试的,谢谢。您正在检查响应标题,它们不必与响应标题相同。所以如果你想检查你设置的标题,我建议使用一个代理工具,比如Charles,使用起来很简单。啊,我明白了。我会试试的,谢谢。我不知道。我应该在哪里加那个分机?哪个文件?可以在同一个文件中添加。在文件的末尾添加这段代码。它给了我一个错误:“声明只在文件范围内有效”啊,我明白了。我一定是在课外认识的,我不知道。我应该在哪里加那个分机?哪个文件?可以在同一个文件中添加。在文件的末尾添加这段代码。它给了我一个错误:“声明只在文件范围内有效”啊,我明白了。一定是我在课外。