Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
WKWebView&;Swift 3-使用evaluateJavaScript设置cookie_Swift_Cookies_Wkwebview - Fatal编程技术网

WKWebView&;Swift 3-使用evaluateJavaScript设置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: \(

我一直在尝试使用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: \(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这为我节省了大量时间。谢谢!