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_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'" 
} 

我想這是因爲Chrome擴展是一個沙箱所以它有它自己的Cookie,但想不出做什麼,有什麼建議?

回答

1

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

事實上,因爲你想使用這個從一個擴展自己的網頁,結合你試圖通過$.cookie設置來延長自己的原點(chrome-extension://somelongextensionidhere/)的餅乾。所以這是行不通的。

至於chrome.cookies.set,您需要閱讀關於如何使用它的文檔!

正確調用應該是這樣的:

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

謝謝克桑。問題是控制檯說:>>> login.js:15 Uncaught TypeError:無法讀取undefined <<的屬性'set'<但是在清單中,權限中有「cookies」...這是一個login.js腳本,而不是popup.js –

+0

我假設'login.js'是一個內容腳本。在這種情況下,你不能使用'chrome.cookies',並且必須把它委託給後臺腳本。 – Xan

+0

是的,我剛剛在清單中定義它:「背景」:{「scripts」:[「login.js」]},它的工作原理! Thanx Xan! –