ios - I cookie delle pagine Web non vengono rilevati da UIWebView



cookies sharepoint (1)

Alcune idee:

Le impostazioni "Blocca cookie" di Safari del dispositivo annullano tutte le modifiche a cookieAcceptPolicy . La politica predefinita di questa impostazione sul dispositivo è "Permetti dai siti web che visito", che a seconda della versione del dispositivo iOS, consente i cookie di terze parti. I test con iOS 9.3.x mostrano che i cookie di terze parti sono persistenti in un UIWebView con le impostazioni predefinite, ma non persistono con le impostazioni "Consenti solo dal sito corrente" o "Blocca sempre".

Controlla se il dispositivo persiste il tuo cookie con le diverse impostazioni dei cookie di Safari.

Inoltre, i tuoi cookie hanno una data di scadenza impostata? Ho scoperto che i cookie senza una data di scadenza impostata sono considerati cookie di sessione in una UIWebView , che persistono solo con il ciclo di vita della vista Web che li ha ricevuti.

Sto sviluppando un'app per iOS che carica una pagina Web utilizzando UIWebView

La pagina web imposta quattro cookie:

  1. Due per Google Analytics, _ga e _gat
  2. Uno per il contatore unico dei visitatori delle mie applicazioni web
  3. Uno per la mia pagina web per rilevare se l'utente ha votato o meno.
    1. Se questo cookie è disponibile, visualizza i risultati del sondaggio.

Da Firefox Storage Inspector vedo tutti i miei cookie come previsto, vedi screenshot:

Tuttavia, da iOS ho stampato i NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies All'interno di webViewDidFinishLoad e ci sono solo due dei quattro cookie previsti, anche gli utenti iOS possono votare tutte le volte che volevano perché i cookie non vengono rilevati (o non sono memorizzati nel dispositivo iOS) :

if let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies {
    for c in cookies {
        print("*******************")
        print("name: \(c.name)")
        print("domain: \(c.domain)")
        print("value: \(c.value)")
        print("path: \(c.path)")
        print("expiresDate: \(c.expiresDate)")
    }
}

Perché la mia app per iOS non rileva i miei cookie personalizzati e rileva solo quelli di Google Analytics?

NOTA 1: Ho anche aggiunto questo codice alla mia app:

func applicationDidBecomeActive(application: UIApplication) {
    NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
}        

NOTA 2: Il mio back-end è un'applicazione web di SharePoint





uiwebview