跨多个域存储和访问特定于用户的数据

时间:2012-03-07 23:23:06

标签: jquery cookies asp-classic greasemonkey userscripts

我最近一直在开发用户脚本以在我们开发的所有网站上显示侧边栏,告诉我们网站是否为AA,浏览器支持等等。这仅供内部使用。我只能使用经典ASP和jQuery / JavaScript。

我的问题如下:

  • 很快就会出台法律,这意味着客户最好不要了解脚本使用的任何Cookie。
  • 数据库团队不满意我们为此脚本创建新数据库(或扩展主数据库)。
  • 最近我注意到,对于大多数浏览器,每个的最大Cookie数量大约为50;考虑到我正在考虑在每个站点,每个服务器或所有服务器上存储数据,我几乎可以肯定,这个脚本最终只需50多个cookie。
  • 我听说HTML 5中有'迷你数据库'设施 - 但我们的大多数网站都是HTML 4,所以这不是一个选项。
  • 如果我们要沿着数据库路线走下去,我们将无法使用一个单一的数据库 - 它必须是每个服务器一个数据库。我认为即使使用一个页面来同步使用许多iFrame的所有服务器也很困难(我相信,虽然不是100%肯定,但如果用户过早地离开页面,任何iFrame都会终止他们的请求,因此数据可能不会更新 - 但如果我错了,请随时纠正我。
  • 需要永久存储数据。

我们有如下设置(非常简化的表示):

  • a.b.com(服务器1,自己的域名)
  • b.b.com(服务器2,自己的域名)
  • c.b.com(服务器3,自己的域名)
  • d.b.com(服务器4,自己的域名)
  • jobs.a.com(网址掩码)
  • careers.b.com(网址掩码)
  • e.m.com(服务器1,自己的域名)
  • f.m.com(服务器2,自己的域名)
  • g.m.com(服务器3,自己的域名)
  • h.m.com(服务器4,自己的域名)

基于以上所述,是否有人建议能够以每个用户为基础同步数据和存储的最佳方式?请注意,理想情况下,这需要在IE(6-9)上使用Firefox,Chrome,Opera和Trixie上的GreaseMonkey。 IE 6-7不是绝对必须的,但更可取。

1 个答案:

答案 0 :(得分:1)

如果它需要是永久性的,并且您不希望客户端能够看到您存储信息,那么客户端存储是不可能的。它必须存储在服务器端..

你需要的是:

  1. 一种唯一识别用户跨域的方法。
  2. 某种服务器端存储
  3. 你可以使用第三方cookie做的第一个(比如google和facebook会在多个域上跟踪你)。在每个站点上都包含一个在跟踪服务器上调用服务的链接(0x0px iframe,小额支付或其他内容)。用户首次访问网站时,请设置长期存在的Cookie。 Cookie每次都会发送到跟踪服务器,从而唯一地识别您的用户。必须在浏览器上启用第三方cookie才能使其正常工作。

    第二个必须是某种数据库或文件。我会说如果你不能使用数据库在其中一台机器(跟踪服务器)上创建一个服务,让那个人将一些信息写入磁盘。这是一个糟糕的勒芒解决方案,因为文件很难查询。