在electron中需要获取Cookies信息,对于这一块内容网上极少,Cookies获取和设置也没有详细的资料,对于想学习electron又没有教程以及资料的情况下研究是非常痛苦的,所以将学到的整理出来,填补这一块空白。
获取Cookies的同时先了解一下session
做什么用的,Session
可以管理浏览器会话
、cookie
、缓存
、代理设置
等。知道了这个就可以获取Cookies了
可以使用WebContents
的session
属性或 session模块
访问现有页的session
一、获取主窗口Cookies
方式一:用WebContents
获取主窗口Cookies
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ width: 800, height: 600 })
win.loadURL('http://github.com')
const ses = win.webContents.session.cookies //获取到主窗口的Cookies
//获取Cookies
ses.cookies.get({ url: 'https://www.electronjs.org/' })
.then((cookies) => {
console.log(cookies)
}).catch((error) => {
console.log(error)
})
//设置Cookies
ses.cookies.set({ url: 'https://www.electronjs.org/',name:"dummy_name",value:"dummy" })
.then((cookies) => {
console.log(cookies)
}).catch((error) => {
console.log(error)
})
方式二:用session
模块获取现有页面的Cookies
const { session } = require('electron')
//获取页面Cookies
session.defaultSession.cookies.get({ url: 'https://www.electronjs.org/' })
.then((cookies) => {
console.log(cookies)
}).catch((error) => {
console.log(error)
})
//设置页面Cookies
const cookie = { url: 'https://www.electronjs.org', name: 'dummy_name', value: 'dummy' }
session.defaultSession.cookies.set(cookie)
.then(() => {
// success
}, (error) => {
console.error(error)
})
//删除Cookies
const cookie = { url: 'https://www.electronjs.org', name: 'dummy_name'}
session.defaultSession.cookies.remove(cookie.url,cookie.name)
.then(() => {
// success
}, (error) => {
console.error(error)
})
二、获取子窗口的Cookies
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ width: 800, height: 600 })
win.loadURL('http://github.com')
const view = new BrowserView()
win.setBrowserView(view)
view.setBounds({ x: 0, y: 0, width: 300, height: 300 })
view.webContents.loadURL('https://electronjs.org')
const ses = view.webContents.session.cookies //获取到主窗口的Cookies
//使用方式如上一样
三、获取webview
的Cookies
//渲染端开启webview
<webview src="https://www.github.com/" httpreferrer="http://cheng.guru" useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko" partition="electron"></webview>
const { session } = require('electron')
const ses = session.fromPartition("electron")
ses.cookies.get({url:'https://github.com'}).then(function(cookies,error){
console.log(cookies);
});