2

我正在创建一个可在各种域中使用的小书签。我想设置一些 cookie 来存储这个小书签的临时设置,所以我假设从这个脚本设置一个 cookie 会将 cookie 分配给脚本源的域。

情况并非如此,小书签能够将 cookie 分配给当前正在查看的站点的域。这不适合我的需要(这会记住每个域的设置,而不是所有域的书签)。

我的问题是,这是否以某种方式破坏了跨域策略?还有一个后续问题,我如何存储小书签的 cookie 而不是它所使用的正确域。

4

2 回答 2

3

书签在当前页面的上下文中运行,因此这是它们运行的​​安全上下文,因此这不会破坏跨域策略。您只能在当前页面的域上设置 cookie。因此,您的小书签不能拥有自己的 cookie。

这与从各种域加载到给定页面中的脚本相同。重要的是页面的来源,而不是脚本的来源。

我所知道的为您的脚本在所有域中保存一次设置的唯一方法是使用跨域 JSONP 并将设置存储在您的服务器上,但您仍然可能难以识别唯一用户。

听起来您正在尝试做的事情将更适合具有插件本地存储的浏览器插件。

于 2012-09-05T23:22:14.360 回答
0

它不会破坏跨域策略,因为它实际上是在单独的域上运行的(这是小书签背后的点)。

如果您想存储 cookie 信息,请使用第 3 方服务(例如,拥有您自己的服务器,其中包含接受 cookie 更改的代码)。请注意,这可能是一个安全问题,因为每个域都可以为您的用户获取 cookie,除非您将服务设为只写(我对此表示怀疑)。

然后还有另一种选择 - 不要将设置保存在 cookie 中。请改用其他存储介质。

于 2012-09-05T23:21:55.463 回答