totorajの開発日記

僕がなんかメモる

ElectronでBrowserWindowのCookieを設定する

タイトル通りです。

sessionってのを使います。

下記の公式ドキュメントに詳細があります。

electron/session.md at master · electron/electron · GitHub

ソースコード

簡単なサンプルです。

"use strict";
const electron = require("electron");
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;

var mainWindow = null;

// アプリの準備ができたらWindowを表示
app.on("ready", function () {
    
    // Windowを生成
    mainWindow = new BrowserWindow({
        width: 600,
        height: 400,
        title: "Cookie test"
    });
    
    // Windowが閉じられたらmainWindowを初期化
    mainWindow.on("close", function () {
        mainWindow = null;
    });
    
    // 適当なHTMLをロード
    mainWindow.loadURL("file://" + __dirname + "/index.html");
    
    /* ===== ここからCookieの設定 ===== */
    // 設定するCookieを定義
    var cookie = {
        url: "http://totoraj.net",// 対象となるURL
        name: "user_name",// Cookieの名前
        value: "totoraj"// Cookieの値
    };
    
    // mainWindowのCookieを設定
    mainWindow.webContents.session.cookies.set(cookie, function (error) {
        if (error) {// エラーが出たら出力
            console.log(error);
        }
    });
    /* ===== ここまでCookieの設定 ===== */
});


// Windowがすべて閉じたらアプリを終了
app.on("window-all-closed", function () {
    if (process.platform != "darwin") {
        app.quit();
    }
});

対象となるURLについて

.nicovideo.jpのようにワイルドカードを指定する場合もhttp://を先頭につけないといけのでhttp://.nicovideo.jpとなる。

.nicovideo.jpを設定してみるとfailedというエラーが出たのでそもそもhttp://https://を付けないとエラーが出る?かもしれない。

おわりに

わけあってBrowserWindowに任意のCookieを設定したかったんだけどなかなかそれらしい記事とかがなかったのでメモ。

参考になれば幸いです。