Chrome - LocalStorage - 在所有网址中存储值

时间:2012-03-14 00:08:44

标签: google-chrome local-storage

我正在开发Chrome扩展程序,用户每次使用扩展程序时都需要使用我们的服务器进行身份验证。我正在尝试实现“记住我”功能,一旦用户输入凭据,扩展程序将永远记住它。我遇到的问题是Chrome会将凭据与用户所在的当前网站相关联。

现在,如果用户在google.com上输入他们的凭据,系统将只记住他们在google.com上的凭据,而不是wikipedia.org。我想要发生的是,他们的凭据将在所有域中被记住。

阅读凭据:

username = localStorage["username"];
password = localStorage["password"];

存储凭据:

localStorage["username"] = username;
localStorage["password"] = password;

检查其凭据是否存在:

if ( localStorage["username"] != "" ) {...}

1 个答案:

答案 0 :(得分:2)

在Chrome扩展程序中,内容脚本在与网页相同的进程和相同的域(例如https://www.google.com)中运行。同时,任何扩展弹出窗口和后台页面在“扩展”过程中运行并共享唯一的起源(例如“eakjnniffhfegdpfehmnpcmjiameincp”)。因此,当您从内容脚本访问localStorage["username"]时,您实际上正在访问属于例如内容脚本的localStorage。 https://www.google.com

因此,如果您希望在扩展程序中的不同内容脚本之间共享信息,则需要将数据存储在localStorage的后台页面上,并通过调用{{3}将内容脚本中的消息发送给它}或chrome.extension.sendRequest。或者,通过致电chrome.extension.connectchrome.tabs.sendRequest,从后台页面向内容脚本发送消息。

另外,您可能需要重新考虑您的数据模型,该模型似乎假设用户在google.com和维基百科上拥有相同的密码。