我正在开发一个基于wxWidgets的应用程序,该应用程序使用WebView进行基于Web的OAuth登录到网站。网站的OAuth登录过程使用cookie在经过身份验证后缓存登录令牌,以便您可以在必要时再次完成登录过程,而无需重新进行身份验证。我在应用程序的macOS版本中使用的WebView后端实现wxWEBVIEW_WEBKIT
在重新启动应用程序之间保留了cookie,甚至重新启动了操作系统。这使得测试登录过程变得困难。
WebView后端在哪里持久保存这些cookie?我该如何清除它们?
我已经尝试清除Safari中的cookie无济于事,我删除了opensnoop
捕获的应用程序文件访问中看到的所有明显的缓存文件,但缓存的登录仍然存在。
答案 0 :(得分:0)
根据a response on the wx-users list,wxWEBVIEW_WEBKIT
后端是一个简单的macOS WebView
。
正如How can I remove cookies stored by WebView in Cocoa application?中所述,在macOS 10.11(El Capitan)及更高版本中,每个应用程序的WebView都有自己的cookie存储空间,并且无法访问彼此的cookie。
我找不到手动清除应用程序cookie的方法;我尝试从*.binarycookies
删除相关的~/Library/Cookies
文件,但这没有任何效果。我仍然不清楚存储cookie的位置。
但是,我可以使用NSHTTPCookieStorage
API以编程方式删除Cookie,遵循https://stackoverflow.com/a/8486398/60422中的代码段。我最后只是为我的应用程序添加了一个菜单项。