Как изменить дату истечения срока действия HTTPCookie и добавить ее в WKWebView - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть файл 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)
}
...