2011-05-28 97 views
0

我相信这是可能的,我似乎无法弄清楚。是否可以从manifest.json访问localStorage?

我正在构建Chrome扩展程序,并且已经在localStorage [“url”]中设置了一个API URL,这是用户特定的。但是,我需要将其添加到我的manifest.json文件中的权限。不过,我似乎无法在清单中访问localStorage。

有没有办法做到这一点?

回答

1

如果您担心cross origin permissions,那么您的API URL中的所有内容都是一个域。

如果他们有一个共同的域,那么只需在权限中声明它。如果有一组域,则可以声明逗号分隔的域列表。如果域名对于每个用户都是独一无二的(很难想象),那么您就没有其他选择,只能宣布全球范围内的全范围http://*/

+0

谢谢。这些域对每个用户都是唯一的,因为API位于用户安装该应用程序的任何服务器上。宣布全方位的伎俩! – rybo 2011-05-28 15:51:21

0

我很确定这是不可能的;您必须在与manifest.json不同的文件中设置您的API网址并手动请求权限。这样做的原因是为了避免权限劫持:如果您的localStorage受到威胁,那么理论上这个扩展可以通过连线在任何需要的地方发出请求,而无需用户干预。

+0

截至今天,我不认为你不能在运行时请求许可。 – haylem 2011-05-28 08:42:17

1

没有

仅仅因为一个Chrome扩展程序清单是纯JSON,这意味着它的唯一的解析文本,不能包含不被严格 JSON规范允许的其它数据类型或文字。所以你不能包含函数,也不能有一个被调用来返回值的函数。

甚至不能输入注释(实际上,现在看起来您现在可以有注释,但事实并非如此)。

实现您的目标的一种方法就是提供一个Web服务,根据需要生成扩展。它会在每个用户的基础上填充manifest.json,并对您的扩展进行压缩和签名。但是,它不能用Chrome网上应用店安装,你需要自己托管它。

相关问题