在WebView中禁用或删除cookie而不影响其他应用程序

发布于 2024-11-30 11:24:02 字数 819 浏览 0 评论 0原文

我正在解决 Mac OSX 10.5 应用程序中的一个问题,该问题需要在用户从应用程序注销时删除 cookie,以便其他用户无需退出应用程序即可登录。当用户第一次进行身份验证时,WebView 使用单例 cookie 存储类 NSHTTPCookieStorage 接收并缓存 5 个 cookie。当我尝试使用 [NSHTTPCookieStorage cookiesForURL:] 方法检索 cookie 时,我只得到 4 个。这意味着第 5 个 cookie 与其他某个 URL 关联。我无法使用域来识别 cookie,因为我可能会删除其他应用程序正在使用的 cookie。我的想法如下:

  1. 加载 URL 时禁用 WebView 的 cookie。
    • 我尝试过使用 [NSMutableURLRequest setHTTPShouldHandleCookies:NO] 但这没有帮助。而且我无法使用 NSHTTPCookieStorage 更改 cookie 策略,因为它会影响其他应用程序。
  2. 检索我正在加载的 URL 的 cookie
    • 我不知道这是否可能。我搜索了所有可用于 WebView 的委托方法,但没有找到任何内容
  3. 使用 [WebFrame reloadFromOrigin] 实例方法重新加载 URL
    • 此功能仅适用于 Mac OSX >= 10.6
  4. 重新创建 WebView 实例
    • 没有帮助,cookie 仍然存在

我也尝试过 WebPreferences 类提供的不同选项,但这没有帮助。预先感谢您提供解决此问题的任何提示。

I'm working on a problem in my Mac OSX 10.5 application that requires deleting cookies on user sign-off from the application - so that a different user can sign-in without the need to quit the application. When user authenticates for the first time, the WebView receives and caches 5 cookies using the singleton cookie storage class NSHTTPCookieStorage. When I try to retrieve the cookies using [NSHTTPCookieStorage cookiesForURL:] method, I get only 4. Which means that the 5th one is associated with some other URL. I cannot use the domain to identify the cookies because I may land up deleting cookies being used by other applications. I am thinking along the following lines:

  1. Disable cookies for the WebView when loading the URL.
    • I have tried using [NSMutableURLRequest setHTTPShouldHandleCookies:NO] but that didn't help. And I cannot change the cookie policy using NSHTTPCookieStorage because it will affect other applications.
  2. Retrieve the cookies for the URL that I am loading
    • I don't know if this is possible. I searched all the delegate methods available for WebView but didn't find anything
  3. Do a fresh reload of the URL using [WebFrame reloadFromOrigin] instance method
    • this is only available for Mac OSX >= 10.6
  4. Recreate the instance of WebView
    • didn't help, cookies still persist

I have also tried different options provided by WebPreferences class, but that didn't help. Thanks in advance for any hints to fix this issue.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

森末i 2024-12-07 11:24:02

您想与 Safari 共享 cookie 吗?如果没有(我假设您没有),请查看 IGIsolatedCookieWebView 的示例如何在 webkit 中创建您自己的私人 cookie 存储。

如果您想与 Safari 共享 Cookie,则需要使用 NSHTTPCookieStorage 跟踪并在适当的时候删除相关 Cookie。

Do you want to share cookies with Safari? If not (and I assume you don't), then look at IGIsolatedCookieWebView for an example of how to create your own private cookie store in webkit.

If you want to share cookies with Safari, you'll need to keep track of and then delete the relevant cookies at the appropriate time using NSHTTPCookieStorage.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文