【问题标题】:Delete all Cookies in Electron desktop app删除 Electron 桌面应用中的所有 Cookie
【发布时间】:2017-05-09 22:47:00
【问题描述】:
我在电子桌面应用程序中使用 oauth (Stack Overflow),并且有一个加载 oauth url 的 web 视图。我的应用程序中有一个注销按钮,该按钮将从 Stack Overflow 网站和应用程序中注销用户。我该怎么做?
如何从电子应用程序的 web 视图中删除所有会话 cookie?
【问题讨论】:
标签:
webview
oauth-2.0
session-cookies
electron
desktop-application
【解决方案1】:
如果您想清除所有 cookie,这将是最直接的方法。
const { session } = require('electron');
session.defaultSession.clearStorageData({storages: ['cookies']})
.then(() => {
console.log('All cookies cleared');
})
.catch((error) => {
console.error('Failed to clear cookies: ', error);
});
它支持更复杂的请求。您可以查看文档here。
【解决方案2】:
您可以使用 Electron 的 cookies.remove() 函数 (https://electron.atom.io/docs/api/cookies/#cookiesremoveurl-name-callback) 删除 cookie
诀窍是将cookie.domain 转换为url。
import { session } from 'electron';
export default function deleteAllCookies() {
session.defaultSession.cookies.get({}, (error, cookies) => {
cookies.forEach((cookie) => {
let url = '';
// get prefix, like https://www.
url += cookie.secure ? 'https://' : 'http://';
url += cookie.domain.charAt(0) === '.' ? 'www' : '';
// append domain and path
url += cookie.domain;
url += cookie.path;
session.defaultSession.cookies.remove(url, cookie.name, (error) => {
if (error) console.log(`error removing cookie ${cookie.name}`, error);
});
});
});
}