2015-01-30 11 views
7

Làm cách nào để nhận được tất cả cookie từ một phiên bản WKWebView?Làm cách nào để tải cookie từ WKWebView?

Dưới đây là những gì tôi đã cố gắng cho đến nay:

  • tôi đã cố gắng sử dụng để đánh giá - [WKWebView evaluateJavaScript:completionHandler:]document.cookie - may kết quả không chứa cookie đánh dấu là HttpOnly.

  • Theo Introducing the Modern WebKit API (WWDC 2014 Session 206), bạn có thể nhận đối tượng response từ ví dụ WKNavigation. Tuy nhiên, theo số class reference, WKNavigation không chứa bất kỳ phương thức/thuộc tính công khai nào.

Trả lời

3

Kể từ khi câu hỏi này chưa được trả lời sau một năm, tôi gửi bài không hoàn hảo của tôi, nhưng làm việc Giải pháp:

Bạn có thể có quyền truy cập đến một đối tượng NSHTTPURLResponse trong - webView:decidePolicyForNavigationResponse:decisionHandler: phương pháp xác định trên WKNavigationDelegate. Sau đó, bạn có thể trích xuất cookie theo cách thủ công từ tiêu đề 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); 
} 

Vui lòng đăng giải pháp của bạn nếu bạn có giải pháp tốt hơn.

+0

Nhưng tôi thấy một số URL sẽ không gọi lại cuộc gọi lại này. ví dụ. trong khi yêu cầu POST. – brain

+0

Có nhiều URL không gọi lại cuộc gọi này, v.d. để gửi hoặc yêu cầu POST – ShivaPrasad

+0

Tốt nhất! Bu "newCookies" phải là "cookie" để nhất quán. –

Các vấn đề liên quan