ログイン
i-mobile
記事の一覧
4.<前の日

2009-04-05

[]特定のサイト で cookie が許可されているか取得

XPCOM では、ある URL で cookie の読み書きが可能かを一発で取得する方法が無いようで、ちょっとめんどくさい。

まず、設定の cookie の例外サイトにて許可・不許可の指定がされているか確認して、そのあと設定で cookie が有効になっているか確認しなければならない。(cookie が有効か確認するインターフェイスすらなく、preferences を直接読まないといけないのはなんでだろう。window.navigator.cookieEnabled も内部では pref を読んでる)

んで、まとめると下記のようになる。引数 aURL は nsIURI を渡すこと。

function cookieEnabled(aURL){
    var permManager = Cc["@mozilla.org/permissionmanager;1"]
                .getService(Ci.nsIPermissionManager);
    var cookiePermission = permManager.testPermission(aURL, "cookie");

    if(cookiePermission == Ci.nsIPermissionManager.DENY_ACTION){
        return false; // 例外サイトで不許可
    }else if(cookiePermission == Ci.nsIPermissionManager.ALLOW_ACTION){
        return true; // 例外サイトで許可
    }else if(cookiePermission == Ci.nsICookiePermission.ACCESS_SESSION){
        return true; // 例外サイトで現在のセッションでのみ許可
    }

        // 設定で cookie が有効になっているか 
    var pref = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
    const COOKIE_BEHAVIOR_REJECT = 2;
    return pref.getIntPref("network.cookie.cookieBehavior") != COOKIE_BEHAVIOR_REJECT;
}
コメントを書くには、なぞなぞ認証に回答する必要があります。
4.<前の日
●ウェブ検索●