2015-01-30 7 views
7

Come ottengo tutti i cookie da un'istanza di WKWebView?Come ottenere i cookie da WKWebView?

Ecco quello che ho provato finora:

  • Ho provato ad utilizzare - [WKWebView evaluateJavaScript:completionHandler:] per valutare document.cookie - purtroppo il risultato non contiene i cookie che hanno segnato come HttpOnly.

  • Secondo Introducing the Modern WebKit API (WWDC 2014 Session 206), dovrebbe essere possibile ottenere un oggetto response da un'istanza di WKNavigation. Tuttavia, secondo lo class reference, WKNavigation non contiene alcun metodo/proprietà pubblico.

risposta

3

Dal momento che questa domanda non è stata risolta dopo un anno, sto inviando la mia imperfetta, ma la soluzione di:

è possibile avere accesso a un oggetto NSHTTPURLResponse in - webView:decidePolicyForNavigationResponse:decisionHandler: metodo definito sul WKNavigationDelegate. È possibile estrarre i cookie manualmente dall'intestazione HTTP:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler { 
    NSHTTPURLResponse* response = navigationResponse.response; 
    NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@""]]; 
    for (NSHTTPCookie *cookie in cookies) { 
     // Do something with the cookie 
    } 

    decisionHandler(WKNavigationResponsePolicyAllow); 
} 

Si prega di inviare la soluzione se si dispone di uno migliore.

+0

Ma ho trovato che alcuni URL non chiameranno questa richiamata. per esempio. mentre la richiesta POST. – brain

+0

Sì, molti URL non richiamano questa chiamata, ad es. on per submit o POST request – ShivaPrasad

+0

Buono! Bu "newCookies" dovrebbe essere "cookie" per coerenza. –

Problemi correlati