gpt4 book ai didi

swift - WKWebView & Swift 3 - 使用 evaluateJavaScript 设置 cookie

转载 作者:行者123 更新时间:2023-11-28 12:17:41 24 4
gpt4 key购买 nike

我一直在尝试使用 Swift 3 为 WKWebView 设置 cookie,以便将设备 token 传递给服务器。

为了设置 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: Optional(Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=0, WKJavaScriptExceptionMessage=SecurityError (DOM Exception 18): The operation is insecure., WKJavaScriptExceptionSourceURL=undefined, NSLocalizedDescription=A JavaScript exception occurred, WKJavaScriptExceptionColumnNumber=0})

最佳答案

我最终通过在运行时将脚本注入(inject) WKWebView 来设置 cookie,该脚本将 Firebase 设备 token (我想传递到我的服务器的字符串)设置为本地存储项。

我最终得到的代码如下;

在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)

将脚本添加到 WKWebView:

userContentController.addUserScript(script)

在此之后,只需正常加载 WKWebView,并通过 Safari Developer Tool 监控 session 的本地存储即可

关于swift - WKWebView & Swift 3 - 使用 evaluateJavaScript 设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com