У меня есть файл cookie, полученный с ответом токена OAuth2:
<NSHTTPCookie
version:0
name:JSESSIONID
value:B2680375E4F780E20CF6F3DB1D0BDC02
expiresDate:'(null)'
created:'2019-02-06 09:53:30 +0000'
sessionOnly:TRUE
domain:my.domain.name
partition:none
sameSite:none
path:/nidp
isSecure:TRUE
isHTTPOnly: YES
path:"/nidp" isSecure:TRUE isHTTPOnly: YES>
Я пытаюсь изменить дату окончания срока действия, установите sessionOnly
на FALSE
и добавьте его WKWebView
, как этоздесь предлагается https://stackoverflow.com/a/26577303/1433612.
Я получаю свойства исходного cookie, обновляю значения и создаю новый HTTPCookie
с properties
инициализатором.Но когда я печатаю новый экземпляр cookie, он показывает старые данные, хотя свойства были явно обновлены.Я очень смущен.
Вот мой код:
if let props = cookie.properties, (props[HTTPCookiePropertyKey.name] as? String) == "JSESSIONID" {
var properties = props
// An NSString object stating whether the cookie should be discarded at the end of the session.
properties.updateValue("FALSE", forKey: HTTPCookiePropertyKey.discard)
// An NSString object containing an integer value stating how long in seconds the cookie should be kept, at most.
let sevenDays = "\(60*60*24*7)"
properties.updateValue(sevenDays, forKey: HTTPCookiePropertyKey.maximumAge)
let oneDay: Double = 60*60*24
let dateAfterOneDay = Date().addingTimeInterval(oneDay)
// An NSDate object or NSString object specifying the expiration date for the cookie.
properties.updateValue(dateAfterOneDay, forKey: HTTPCookiePropertyKey.expires)
let newCookie = HTTPCookie(properties: properties)!
webView
.configuration
.websiteDataStore
.httpCookieStore
.setCookie(newCookie)
}