Swift:多个WKWebview为同一个域应用程序设置了不同的cookie
我有一个Cocoa应用程序,其中包含多个Web视图,但所有Web视图都具有相同的url。我希望每个网络视图都有自己的cookie 当前的问题是,我保存cookie并将它们设置在WebView中,所有其他WebView都会收到cookie,我认为这是因为它们都具有相同的域 是否有一种方法来分离cookie,并使每个webview接收其自定义cookie 即使是javascript解决方案,我也是一个接受者 这是我目前的代码:Swift:多个WKWebview为同一个域应用程序设置了不同的cookie,swift,macos,cocoa,wkwebview,Swift,Macos,Cocoa,Wkwebview,我有一个Cocoa应用程序,其中包含多个Web视图,但所有Web视图都具有相同的url。我希望每个网络视图都有自己的cookie 当前的问题是,我保存cookie并将它们设置在WebView中,所有其他WebView都会收到cookie,我认为这是因为它们都具有相同的域 是否有一种方法来分离cookie,并使每个webview接收其自定义cookie 即使是javascript解决方案,我也是一个接受者 这是我目前的代码: func setData(_ value: Any, key:
func setData(_ value: Any, key: String) {
let ud = UserDefaults.standard
let archivedPool = NSKeyedArchiver.archivedData(withRootObject: value)
ud.set(archivedPool, forKey: key)
}
func getData<T>(key: String) -> T? {
let ud = UserDefaults.standard
if let val = ud.value(forKey: key) as? Data,
let obj = NSKeyedUnarchiver.unarchiveObject(with: val) as? T {
return obj
}
return nil
}
我在寻找这个问题的答案。运气好吗?不(我正在寻找这个问题的答案。运气好吗?不………:(
let processPool: WKProcessPool
if let pool: WKProcessPool = self.getData(key: "pool\(service.id)") {
processPool = pool
} else {
processPool = WKProcessPool()
self.setData(processPool, key: "pool\(service.id)")
}
self.configuration.processPool = processPool
if let cookies: [HTTPCookie] = self.getData(key: service.id) {
for cookie in cookies {
self.configuration.websiteDataStore.httpCookieStore.setCookie(cookie) {
print("Set cookie = \(cookie) with name = \(cookie.name)")
}
}
}
Timer.scheduledTimer(withTimeInterval: 20, repeats: true) { _ in
print("Saving...")
self.configuration.websiteDataStore.httpCookieStore.getAllCookies { cookies in
self.setData(cookies, key: self.service.id)
}
}
let request = URLRequest(url: service.url)
Timer.scheduledTimer(withTimeInterval: 1.5, repeats: false) { _ in
self.load(request)
}