A container that manages the storage of cookies.


@interface NSHTTPCookieStorage : NSObject


Each stored cookie is represented by an instance of the NSHTTPCookie class.

Sharing Cookie Storage

The persistent cookie storage returned by sharedHTTPCookieStorage may be available to app extensions or other apps, subject to the following guidelines:

  • iOS — Each app and app extension has a unique data container, meaning they have separate cookie stores. You can obtain a common cookie storage by using the sharedCookieStorageForGroupContainerIdentifier: method.

  • macOS (non-sandboxed) — As of macOS 10.11, each app has its own cookie storage. Prior to macOS 10.11, a common cookie store is shared among the user's apps.

  • macOS (sandboxed) — Same as iOS.

  • UIWebViewUIWebView instances within an app inherit the parent app's shared cookie storage.

  • WKWebView — Each WKWebView instance has its own cookie storage. See the WKHTTPCookieStore class for more information.

Session cookies (where the cookie object’s sessionOnly property is YES) are local to a single process and are not shared.

Subclassing Notes

The NSHTTPCookieStorage class is usable as-is, but you can subclass it. For example, you can override the storage methods like storeCookies:forTask:, getCookiesForTask:completionHandler: to screen which cookies are stored, or reimplement the storage mechanism for security or other reasons.

When overriding methods of this class, be aware that methods that take a task parameter are preferred by the system to equivalent methods that do not. Therefore, you should override the task-based methods when subclassing, as follows:


Getting the Shared Cookie Storage Object


The shared cookie storage instance.

+ sharedCookieStorageForGroupContainerIdentifier:

Returns the cookie storage instance for the container associated with the specified app group identifier.

Getting and Setting the Cookie Accept Policy


The cookie storage’s cookie accept policy.


Cookie acceptance policies implemented by the NSHTTPCookieStorage class.

Adding and Removing Cookies

- removeCookiesSinceDate:

Removes cookies that were stored after a given date.

- deleteCookie:

Deletes the specified cookie from the cookie storage.

- setCookie:

Stores a specified cookie in the cookie storage if the cookie accept policy permits.

- setCookies:forURL:mainDocumentURL:

Adds an array of cookies to the cookie storage if the storage’s cookie acceptance policy permits.

- storeCookies:forTask:

Stores an array of cookies in the cookie storage, on behalf of the provided task, if the cookie accept policy permits.

Retrieving Cookies


The cookie storage’s cookies.

- getCookiesForTask:completionHandler:

Fetches cookies relevant to the specified task and passes them to the completion handler.

- cookiesForURL:

Returns all the cookie storage’s cookies that are sent to a specified URL.

- sortedCookiesUsingDescriptors:

Returns all of the cookie storage’s cookies, sorted according to a given set of sort descriptors.

Tracking Cookie Storage Changes


A notification posted when the cookies stored in the cookie storage have changed.


A notification posted when the acceptance policy of the cookie storage has changed.


Inherits From

See Also



A representation of an HTTP cookie.