2015-01-30 2 views
7

어떻게이 WKWebView 인스턴스에서 모든 쿠키를받을 수 있나요? 여기 WKWebView에서 쿠키를 얻는 방법은 무엇입니까?

는 지금까지 시도했습니다 무엇 :

  • 내가 document.cookie을 평가하는 - [WKWebView evaluateJavaScript:completionHandler:]를 사용하여 시도 - 불행히도 결과는 HttpOnly로 표시 쿠키가 포함되어 있지 않습니다.

  • Introducing the Modern WebKit API (WWDC 2014 Session 206)에 따르면 WKNavigation의 인스턴스에서 response 개체를 가져올 수 있어야합니다. 그러나 class reference에 따르면 WKNavigation에는 공용 메서드/속성이 포함되어 있지 않습니다.

답변

3

이 질문은 1 년 후에 답을하지 않았기 때문에, 나는 나의 불완전한를 올리기 만하고 있어요 솔루션 :

당신은 WKNavigationDelegate에 정의 - webView:decidePolicyForNavigationResponse:decisionHandler: 방법에 NSHTTPURLResponse 개체에 액세스 할 수 있습니다. 나중에 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); 
} 

더 나은 방법이 있으면 솔루션을 게시하십시오.

+0

그러나 일부 URL에서이 콜백을 호출하지 않을 것으로 나타났습니다. 예 : POST 요청을하는 동안 – brain

+0

예를 들어 많은 URL이이 전화를 다시 호출하지 않습니다. 제출 또는 POST 요청에 대해 – ShivaPrasad

+0

좋습니다! Bu "newCookies"는 일관성을 위해 "쿠키"여야합니다. –

관련 문제