Ios 在加载URL请求之前,如何在webView中设置localStorage项?

Ios 在加载URL请求之前,如何在webView中设置localStorage项?,ios,swift,wkwebview,Ios,Swift,Wkwebview,我必须访问在其本地存储上有令牌的网页 let javascript = "localStorage.setItem('token', 'abc')" let url = URL(string: "https://test.com/abc") webView.evaluateJavaScript(javascript) { (_, err) in print(err?.localizedDescription) // This will return 'A Java

我必须访问在其本地存储上有令牌的网页

let javascript = "localStorage.setItem('token', 'abc')"
let url = URL(string: "https://test.com/abc")
webView.evaluateJavaScript(javascript) { (_, err) in
        print(err?.localizedDescription)
        // This will return 'A JavaScript exception occurred'
    }
let request = URLRequest(url: url!)
webView.load(request)

我认为这是不可能的。您将得到以下错误:

Error Domain=WKErrorDomain Code=4 
"A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=0, 
WKJavaScriptExceptionMessage=SecurityError: The operation is 
insecure., WKJavaScriptExceptionColumnNumber=0, 
NSLocalizedDescription=A JavaScript exception occurred}
对于WKWebView,您无能为力

我解决了这个问题,但我认为这是一个糟糕的做法,正确的方法是能够在请求的头中发送令牌

主要的问题是,在web视图加载之前,您无法运行添加本地存储项的javascript脚本,因此我必须等待加载该页面,然后运行添加所需令牌的javascript脚本,然后重新加载该页面。这是我的代码,但我认为这是一种不好的做法,我相信前端团队应该允许我结束这一操作请求头中的令牌 首先,有一种只重新加载web视图一次的方法

var loaded = false
func load() {
    if !loaded {
        webView.reload()
    }
    loaded = true
}
然后我必须向WKNavigationDelegate确认在加载页面时重新加载该页面,这是我的代码

extension ViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        webView.evaluateJavaScript(javascript) { (_, err) in
            self.load()
        }

    }
}