<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Unable to get cookies from WKWebView"
   href="https://bugs.webkit.org/show_bug.cgi?id=198554">198554</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Unable to get cookies from WKWebView
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>Safari 12
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>iPhone / iPad
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>iOS 12
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Blocker
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>New Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned@lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>jeremyschonfeld@gmail.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=371369" name="attach_371369" title="Cookies shown in the safari web inspector after passing the login page in the iOS simulator">attachment 371369</a> <a href="attachment.cgi?id=371369&action=edit" title="Cookies shown in the safari web inspector after passing the login page in the iOS simulator">[details]</a></span>
Cookies shown in the safari web inspector after passing the login page in the iOS simulator

I am currently using a WKWebView to authenticate a user via a website in my app. Ideally, the web view is presented, the user enters login information, the website responds with the proper authentication cookies, and then the app retrieves the cookies from the web view to use in later background URLSession requests. However, I am unable to get the cookies after login. I can clearly see through the Safari web inspector that the cookies appear after moving past the login page (see attached screenshot). However, I cannot retrieve the cookies via code. I tried setting the view controller as the WKHTTPCookieStoreObserver with "webView.configuration.websiteDataStore.httpCookieStore.add(self)" in viewDidLoad() of the view controller, but the delegate method "cookiesDidChange" is never called. Additionally, I attempt to call "webView.configuration.websiteDataStore.httpCookieStore.getAllCookies" in webView didFinish navigation, however the callback only returns the cookies half of the time seemingly randomly. The other half of the time, the callback returns an empty list or other cookies (not the authentication cookies I see in the web inspector). This issue is blocking me from adding a functioning login view to my app. I spoke to some of the WebKit developers (Chris and John) at the WWDC lab today.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>