如何删除WebView在Cocoa应用程序中存储的Cookie?

如何删除WebView在Cocoa应用程序中存储的Cookie?,cocoa,cookies,webkit,Cocoa,Cookies,Webkit,My Cocoa应用程序使用WebView打开使用Cookie的页面。出于测试目的,我想删除这些cookie。如何(以编程方式或手动方式)执行此操作?最初,Mac OS X上的应用程序之间共享Cookie。因此,您可以使用Safari首选项删除所有Cookie 然而,从OSX10.11开始,这个潜在的安全漏洞已经被关闭,所有应用都有自己的cookie存储。(甚至在此之前,沙盒应用程序也有自己的cookie存储)如果你想通过编程实现,你可以使用 您需要cookiesForURL:和deleteCo

My Cocoa应用程序使用
WebView
打开使用Cookie的页面。出于测试目的,我想删除这些cookie。如何(以编程方式或手动方式)执行此操作?

最初,Mac OS X上的应用程序之间共享Cookie。因此,您可以使用Safari首选项删除所有Cookie


然而,从OSX10.11开始,这个潜在的安全漏洞已经被关闭,所有应用都有自己的cookie存储。(甚至在此之前,沙盒应用程序也有自己的cookie存储)

如果你想通过编程实现,你可以使用

您需要
cookiesForURL:
deleteCookie:
。有点像这样(未经测试):


有没有办法阻止共享此类cookie?唯一的办法是对应用程序进行沙箱处理,或者自定义每个URL请求以不执行http cookiehandling@MikeAbdullah您如何定制URL请求来处理自己的cookie?通过
WebResourceLoadDelegate
可以修改传出请求
mutableCopy
将为您提供一个可变副本,您可以告诉WebKit不要为您提供cookie。类似的API可用于处理响应。不过我已经迷失了方向,现在可能有更好的API来处理cookie了:根据NSHTTPCookeStorage文档:从OS X 10.11开始,每个应用程序都有自己的SharedHTTPCookeStorage单例,这将不会与其他应用程序共享。在我看来,弄乱一些随机应用程序的共享cookie似乎是一个安全漏洞。我假设cookie jar只是原始的一个克隆,并且您实际上只是在为当前会话删除cookie?如。。。下次运行应用程序时,它们会回来吗?
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];

for (NSHTTPCookie *cookie in [cookieJar cookiesForURL:@"http://myserver.com"]) 
{
  [cookieJar deleteCookie:cookie];
}