URLSession是否在iOS上使用自定义CookieStorage?
我需要一个urlsession,它将cookies存储在一个单独的cookieStorage中 在下面的代码中,urlSession中的cookieStorage与shares cookieStorage相同,是否可以创建单独的cookie存储URLSession是否在iOS上使用自定义CookieStorage?,ios,swift,urlsession,nshttpcookiestorage,Ios,Swift,Urlsession,Nshttpcookiestorage,我需要一个urlsession,它将cookies存储在一个单独的cookieStorage中 在下面的代码中,urlSession中的cookieStorage与shares cookieStorage相同,是否可以创建单独的cookie存储 let config = URLSessionConfiguration.default session = URLSession(configuration: config) config.httpCookieAcceptPol
let config = URLSessionConfiguration.default
session = URLSession(configuration: config)
config.httpCookieAcceptPolicy = .always
session.configuration.httpCookieStorage = HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier: "adfadf")
let task = session.dataTask(with: URL(string: "https://www.google.com")!) { (data, response, error) in
print((response as? HTTPURLResponse)?.allHeaderFields ?? "")
DispatchQueue.main.async {
print(self.session.configuration.httpCookieStorage?.cookies ?? "wtf")
print(HTTPCookieStorage.shared === self.session.configuration.httpCookieStorage)
}
}
task.resume()
如果我使用HTTPCookieStorage()
编辑
我尝试手动创建cookie存储,并在请求完成后将cookie添加到其中
let cookies = HTTPCookie.cookies(withResponseHeaderFields: headers, for: url)
// cookies is not empty
self.cookieStore.setCookies(cookies, for: url, mainDocumentURL: nil)
print(self.cookieStore.cookies) //result is nil
最后,我以nil作为cookie结束如果您打开
NSHTTPCookieStorage
的头文件,您将看到此文档(由于某些原因,这些详细信息不会出现在常规文档中)
为了拥有有效的应用程序组,您需要按照中的说明添加它
我猜,由于您没有将应用程序组添加到您的权利中,它默认为
NSHTTPCookieStorage.shared
显然HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier:“groupName”)
似乎只在iOS 10+上工作,在iOS 9上,它将返回nil,即使文档中显示@可用(iOS 9.0,*)
打开类func sharedCookieStorage(forGroupContainerIdentifier标识符:String)->HTTPCookieStorage
您可以使用以下解决方法:
let cookies: HTTPCookieStorage
if #available(iOS 10.0, *) {
cookies = HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier: "groupName")
} else {
cookies = HTTPCookieStorage.shared
}
最后有用吗?
let cookies: HTTPCookieStorage
if #available(iOS 10.0, *) {
cookies = HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier: "groupName")
} else {
cookies = HTTPCookieStorage.shared
}