【问题标题】:Can't set cookie using Chrome Extension无法使用 Chrome 扩展程序设置 cookie
【发布时间】:2017-02-04 20:20:16
【问题描述】:

如何使用 Chrome 扩展程序设置 cookie?我正在通过 Chrome 扩展程序登录我的网页。我必须设置sessionid,但它不起作用。

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,但不知道该怎么做,有什么建议吗?

【问题讨论】:

    标签: javascript jquery google-chrome cookies google-chrome-extension


    【解决方案1】:

    我想这是因为 Chrome 扩展程序是一个沙盒,所以它有自己的 cookie

    确实,由于您尝试从扩展程序自己的页面使用它,这会将您尝试通过 $.cookie 设置的 cookie 绑定到扩展程序自己的来源 (chrome-extension://somelongextensionidhere/)。所以这行不通。

    至于chrome.cookies.set,您需要阅读有关如何使用它的文档!

    正确的调用应该是这样的:

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

    【讨论】:

    • 谢谢 Xan。问题是控制台说: >>> login.js:15 Uncaught TypeError: Cannot read property 'set' of undefined
    • 我假设login.js 是一个内容脚本。在这种情况下,您不能从中使用chrome.cookies,而必须将其委托给后台脚本。
    • 是的,我刚刚在清单中定义了它:"background": { "scripts": ["login.js"]} 并且它有效!感谢 Xan!
    猜你喜欢
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多