在 iPhone 和 iPad 上使用 UIWebView 进行隐私浏览
Posted
技术标签:
【中文标题】在 iPhone 和 iPad 上使用 UIWebView 进行隐私浏览【英文标题】:Private browsing with UIWebView on the iPhone & iPad 【发布时间】:2010-06-14 10:58:57 【问题描述】:现有应用如何实现此功能???
我可以只为某些网站存储 cookie,并且只存储在我的应用程序中吗?据我了解,Web 视图以共享模式存储 cookie...以便与 Safari 和其他使用 UIWebView 的应用程序共享它们。
【问题讨论】:
确认一下,您说的是隐私浏览还是匿名浏览? 实际上是隐私浏览。我希望能够彻底清除下载的图像和 cookie 的缓存。 请考虑将标题从“匿名浏览”更改为“私人浏览”,以免误导其他搜索它的人。它们是两种完全不同的东西。 【参考方案1】:根据NSHTTPCookieStorage
docs,应用程序之间不共享cookie:
iPhone OS 注意:Cookie 不共享 在 iPhone OS 中的应用程序中。
所以默认情况下它们似乎应该是“私有的”。您也可以使用[NSHTTPCookieStorage sharedHTTPCookieStorage]
对象将cookie 存储策略设置为根本不存储cookie,或者您可以根据需要使用deleteCookie:
方法自行清理。
对于你的 UIWebview 加载的其他内容,当你创建你的 webview 加载的 NSURLRequest 时,你可以设置一个缓存策略来控制内容是否被缓存。例如:
NSURLRequest * request = [NSURLRequest requestWithURL: [NSURL URLWithString: url]
cachePolicy: NSURLRequestReloadIgnoringLocalAndRemoteCacheData
timeoutInterval: 60.0]
[webView loadRequest: request];
NSURLRequestReloadIgnoringLocalAndRemoteCacheData
告诉请求忽略缓存并从网络加载请求。我不确定它是否还会阻止来自网络的响应被缓存,但可以肯定的是,您始终可以自己将其从缓存中删除:
[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];
【讨论】:
【参考方案2】:如果您在谈论隐私浏览,则 UIWebView 实际上不会在应用关闭后存储历史记录(只是暂时用于来回)。相反,您必须自己实现存储历史记录,因此它会自动成为隐私浏览。
简短回答:不要做任何事情。它已经处于隐私浏览模式。
编辑:为了处理缓存检查这个方法:
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
并使 cashedResponse 返回 nil。
【讨论】:
嗯...关于历史记录还可以...但是缓存的图像和 cookie 呢?我认为至少保留了 cookie,并且可能还保留了图像……不? 谢谢 thyrgle...这听起来像是一个很好的回应但是...我在哪里/如何在 UIWebView 中实现它?或者我应该在 NSURLCache 的子类中实现,如下所示:icab.de/blog/2009/08/18/… 实现这一点是否有用,UIWebView OS 是否不存储缓存?以上是关于在 iPhone 和 iPad 上使用 UIWebView 进行隐私浏览的主要内容,如果未能解决你的问题,请参考以下文章