ElectronでBrowserWindowのCookieを設定する

タイトル通りです。

session ってのを使います。

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

https://github.com/electron/electron/blob/master/docs/api/session.md#instance-methods

ソースコード

簡単なサンプルです。

"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 を設定したかったんだけどなかなかそれらしい記事とかがなかったのでメモ。

参考になれば幸いです。