Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.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 将请求标头添加到WKWebView中的所有传出请求_Ios_Swift_Header_Request_Wkwebview - Fatal编程技术网

Ios 将请求标头添加到WKWebView中的所有传出请求

Ios 将请求标头添加到WKWebView中的所有传出请求,ios,swift,header,request,wkwebview,Ios,Swift,Header,Request,Wkwebview,TL;DR:我有一个iOS(Swift)项目,带有WKWebView。我想在此WKWebView中向所有传出请求(html、图像、脚本、样式表等)添加请求头。我不知道怎么做 背景: 我有一个Swift iOS应用程序,它使用WKWebView呈现html视图。这些视图托管在我们的服务器上,服务器分为生产环境和暂存环境。我已经使用Akamai设置了登台环境,以便所有传入的请求都必须传递一个请求头才能被接受 问题: 目前,我创建了WKWebView的一个子类,它覆盖loadRequest方法,如下所

TL;DR:我有一个iOS(Swift)项目,带有WKWebView。我想在此WKWebView中向所有传出请求(html、图像、脚本、样式表等)添加请求头。我不知道怎么做

背景:
我有一个Swift iOS应用程序,它使用WKWebView呈现html视图。这些视图托管在我们的服务器上,服务器分为生产环境和暂存环境。我已经使用Akamai设置了登台环境,以便所有传入的请求都必须传递一个请求头才能被接受

问题:
目前,我创建了WKWebView的一个子类,它覆盖loadRequest方法,如下所示:

override func loadRequest(request: NSURLRequest) -> WKNavigation? {
    guard let mutableRequest = request.mutableCopy() as? NSMutableURLRequest else {
        return super.loadRequest(request)
    }

    if let url = request.URL, host = url.host {
        if (host == "staging.example.com") {
            mutableRequest.setValue("secret-value", forHTTPHeaderField: "secret-header")
        }
    }


    return super.loadRequest(mutableRequest)
}
这将捕获初始html请求,该请求按预期工作。但是,由于该页面从同一服务器加载两个图像、样式表和脚本,因此它们不会通过loadRequest方法,并且会被拒绝,因为它们的请求缺少此必需的请求头

要求:

它必须与iOS 8+上的WKWebView配合使用。

使用当前的API是不可能的-您无法处理WKWebView发出的所有请求。您可以使用
UIWebView
+(
WKWebView
不支持它)并将您的头添加到特定服务器的所有请求中作为替代。

Bummer。谢谢你的回答!