0

Chrome拡張機能を使用してCookieを設定するにはどうすればよいですか? Chrome拡張機能を使用してウェブページへのログインに取り掛かりました。 sessionidを設定する必要がありますが、動作しません。Chrome拡張機能を使用してCookieを設定できません

successのアラートは表示されますが、ログインしたりページをリダイレクトしたりすることはありません。

$(document).ready(function() { 
    $('#login-button-id').click(function() { 

     var login = $('#input-email-id').val(); 
     var password = $('#input-password-id').val(); 
     $.ajax({ 
      url: 'http://127.0.0.1:8000/api/authenticate', 
      type: 'POST', 
      data: { 
       'login': login, 
       'password': password 
      }, 
      success: function (data) { 
       $.cookie('sessionid',data.sessionid); 
       chrome.cookies.set({"sessionid":data.sessionid}); 
       alert("You are logged in"); 
       window.location.href = "http://127.0.0.1:8000/admin"; 
      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       console.log("JQuery failed: " + textStatus + " with error thrown: " + errorThrown); 
       console.log(jqXHR); 
      } 
     }) 
    }); 
    $('#logout-button-id').click(function() { 

    }) 
}); 

MANIFEST

{ 
    "manifest_version": 2, 
    "name": "xyz", 
    "description": "This is a plugin collaborating with xyz.com", 
    "version": "1.0", 
    "browser_action": { 
    "default_icon": "spy-icon.png", 
    "default_popup": "popup.html", 
    "default_title": "Click here!" 
    }, 
    "permissions": [ 
    "activeTab", 
    "https://ajax.googleapis.com/", 
    "cookies", 
    "<all_urls>" 
    ], 
    "content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'" 
} 

私はそれは、任意の提案を、それ自身のクッキーを持っていますが、何をすべきかを把握することはできませんので、クローム拡張がサンドボックスであるからだと仮定?実際

答えて

1

I suppose it's because Chrome Extension is a sandbox so it has it's own cookies

、あなたが拡張自身の原点(chrome-extension://somelongextensionidhere/)に$.cookieを経由して設定しようとしているクッキーをバインド延長自身のページから、これを使用しようとしているからです。これはうまくいきません。

chrome.cookies.setについては、使用方法に関するドキュメントを読む必要があります。

chrome.cookies.set({ 
    url: "http://127.0.0.1:8000/", 
    name: "sessionid", 
    value: data.sessionid 
}); 
+0

おかげXAN:

適切な呼び出しは次のようなものでなければなりません。問題はコンソールが言う:>>> login.js:15 Uncaught TypeError:未定義の<< set "のプロパティを読み取ることができません<<<しかし、マニフェストでは、アクセス許可に"クッキー "があります...これはlogin.jsスクリプトです、not popup.js –

+0

私は 'login.js'がコンテンツスクリプトだとします。その場合は、 'chrome.cookies'を使用することはできません。バックグラウンドスクリプトに委譲する必要があります。 – Xan

+0

はい、私はマニフェストでこれを定義しました: "background":{"scripts":["login.js"]}それは動作します!高安善! –

関連する問題