首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >持续cookies in Electron 5

持续cookies in Electron 5
EN

Stack Overflow用户
提问于 2021-01-14 09:17:08
回答 2查看 210关注 0票数 0

我在Electron中加载一个网页URL,除非应用程序关闭,cookies在再次打开后是空的。我无法更新,因为插件支持被移除了,所以我被困在5.x版本中。我尝试了几种不同的方法,但都没有成功。在Electron 5中获取持久cookie的最好方法是什么?

下面是我尝试过的变通方法。然而,它并没有起作用。

代码语言:javascript
复制
const {electron, app, BrowserWindow} = require('electron');
const path = require('path')
const fs = require('fs');
const dataPath = app.getPath('userData')
const filePath = path.join(dataPath, 'config');

  mainWindow = new BrowserWindow({
    webPreferences: {
      plugins: true,
      nodeIntegration: false
    }
  });

  try {
    console.log(fs.readFileSync(filePath, 'utf8'))
    mainWindow.webContents.executeJavaScript(
      "document.cookie = '" + fs.readFileSync(filePath, 'utf8') + "';"
    )
  } catch (e) {
    console.log(e)
  }

  mainWindow.loadURL('https://www.example.com/')

  mainWindow.on('close', function () {
    mainWindow.webContents
    .executeJavaScript('document.cookie;')
    .then(cookies => {
      console.log(cookies)
      fs.writeFileSync(filePath, cookies)
    })
  })
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-19 09:38:19

以下是对我起作用的方法。

代码语言:javascript
复制
  mainWindow = new BrowserWindow({
    webPreferences: {
      partition: 'persist:MyAppSomethingUnique'
    }
  });

  mainWindow.on('did-start-navigation', function() {
    session.defaultSession.cookies.flushStore();
  });

  mainWindow.on('did-navigate', function() {
    session.defaultSession.cookies.flushStore();
  });
票数 0
EN

Stack Overflow用户

发布于 2021-01-17 16:58:30

尝试参考这些文档:https://www.electronjs.org/docs/api/cookies

代码语言:javascript
复制
const { session } = require('electron')

// Query all cookies.
session.defaultSession.cookies.get({})
  .then((cookies) => {
    console.log(cookies)
  }).catch((error) => {
    console.log(error)
  })

// Query all cookies associated with a specific url.
session.defaultSession.cookies.get({ url: 'http://www.github.com' })
  .then((cookies) => {
    console.log(cookies)
  }).catch((error) => {
    console.log(error)
  })

// Set a cookie with the given cookie data;
// may overwrite equivalent cookies if they exist.
const cookie = { url: 'http://www.github.com', name: 'dummy_name', value: 'dummy' }
session.defaultSession.cookies.set(cookie)
  .then(() => {
    // success
  }, (error) => {
    console.error(error)
  })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65712071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档