我使用下面的代码来设置自UIWebView发送的请求上的自定义HTTP标头。问题是我看到页面加载一秒钟,然后它变成白色/黑屏。我测试过不同的网址,但行为是一样的。有任何想法吗?在所有UIWebView请求中添加自定义http标头字段
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
var headerIsPresent = false
let headerFields = request.allHTTPHeaderFields
for headerField in headerFields?.keys.array as [String] {
if headerField == "X-Test-App" {
headerIsPresent = true
}
}
if headerIsPresent {
return true
} else {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
dispatch_async(dispatch_get_main_queue(), {
let url = request.URL
var newRequest: NSMutableURLRequest = request as NSMutableURLRequest
// set new header
newRequest.addValue("MyValue", forHTTPHeaderField: "X-Test-App")
// reload the request
self.webView.loadRequest(newRequest)
})
})
return false
}
}
嗯,我没有做太多与快捷,但是这看起来递归......也许把调试中断在那里? –
它是递归的,但不应该是一个问题,因为他们在添加头之前检查头的存在(并递归) –
我相信'shouldStartLoadWithRequest'只会在页加载时调用,而不是在资源加载时调用,您可能会验证这不是问题。 –