WKWebView&;Swift 3-使用evaluateJavaScript设置cookie
我一直在尝试使用Swift 3为WKWebView设置cookie,以便将设备令牌传递给服务器 为了设置cookie,我一直在尝试使用的代码如下所示:WKWebView&;Swift 3-使用evaluateJavaScript设置cookie,swift,cookies,wkwebview,Swift,Cookies,Wkwebview,我一直在尝试使用Swift 3为WKWebView设置cookie,以便将设备令牌传递给服务器 为了设置cookie,我一直在尝试使用的代码如下所示: wkWebView.evaluateJavaScript("document.cookie='access_token=your token';domain='your domain';") { (data, error) -> Void in print("data: \(data)") print("error2: \(
wkWebView.evaluateJavaScript("document.cookie='access_token=your token';domain='your domain';") { (data, error) -> Void in
print("data: \(data)")
print("error2: \(error)")
wkWebView.reload()
}
但是,我被困在这里,因为这段代码会产生以下错误输出:
error2:可选(Error Domain=WKErrorDomain Code=4“发生JavaScript异常”UserInfo={WKJavaScriptExceptionInNumber=0,WKJavaScriptExceptionMessage=SecurityError(DOM异常18):操作不安全。WKJavaScriptExceptionSourceURL=未定义,NSLocalizedDescription=发生JavaScript异常,WKJavaScriptExceptionColumnNumber=0})
我通过在运行时向WKWebView中注入一个脚本来设置cookie,该脚本将Firebase设备令牌(我要传递给服务器的字符串)设置为本地存储项 我得到的代码如下: 要在WKWebView中设置本地存储,请执行以下操作:
let addCookieScript="localStorage.setItem('device', '\(self.tokenFirebase)');\nconsole.log(localStorage.getItem('token'));\nconsole.log(localStorage.getItem('userId'));\n"
let script: WKUserScript = WKUserScript(source: addCookieScript as String, injectionTime: .atDocumentEnd, forMainFrameOnly: false)
userContentController.addUserScript(script)
将脚本添加到WKWebView:
let addCookieScript="localStorage.setItem('device', '\(self.tokenFirebase)');\nconsole.log(localStorage.getItem('token'));\nconsole.log(localStorage.getItem('userId'));\n"
let script: WKUserScript = WKUserScript(source: addCookieScript as String, injectionTime: .atDocumentEnd, forMainFrameOnly: false)
userContentController.addUserScript(script)
在此之后,只需像平常一样加载WKWebView,并通过Safari开发者工具监控会话的本地存储您使用的是Web服务器还是本地文件()?我使用的是Web服务器,Node.Js服务于角度应用尝试以下解决方案:如果您在创建webview后需要设置cookie,检查第二个场景。谢谢,我会检查它,但我不清楚您希望我尝试什么用户解决方案?matt'r Response这为我节省了大量时间。谢谢!