【问题标题】:Using Cookie for browser communication使用 Cookie 进行浏览器通信
【发布时间】:2009-05-29 15:32:59
【问题描述】:

我计划使用 cookie 在两个浏览器窗口之间进行通信。我想知道是否有任何我想不到的缺点。服务器端不需要数据,因此通过 cookie 进行通信就足够了。是我遗漏了什么还是可以使用?

我知道限制是 4K。文字中的4k大概是多少?说我想存储 MD5/SHA 字符串。我可以在一个 cookie 中存储多少个这样的 md5 字符串?

非常感谢您的宝贵时间。

【问题讨论】:

    标签: cookies


    【解决方案1】:
    • 显而易见的是,用户可能在浏览器中禁用了 cookie...
    • 4K 文本多少钱?大概这么多(Lipsum Generator 提供):

    Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Duis quam quam, bibendum sat amet egestas id, suscipit vel mi。 Integer est lacus, blandit vel accumsan non, lobortis eget purus。 Nunc non felis nec justo ullamcorper suscipit。前庭 dapibus lobortis semper。 Quisque mollis, lectus non porta semper, quam sapien adipiscing erat, in tincidunt risus lacus et felis。 Vivamus pellentesque, massa in varius cursus, lorem tortor vehicula velit, et commodo neque sapien eget felis。 Morbi iaculis condimentum lorem nec iaculis。 Vivamus sem ligula,前庭 id tempus scelerisque,aliquam non velit。整数 ac sapien lorem, sed egestas ligula。 Nam tristique tortor id odio imperdiet 发酵 sed sat amet nisl。 Aliquam in tortor ligula, dignissim iaculis libero。 Fusce ut tortor ante,在 convallis nisi。

    Curabitur accumsan condimentum turpis,tincidunt fringilla nibh hendrerit vitae。 Aliquam ac arcu nibh, eget viverra dui。 Sed 一个 nisi nibh, ut interdum orci。 Suspendisse laoreet sollicitudin libero ac 发酵。 Curabitur ultrices enim 坐在 dapibus libero iaculis 中的 amet massa mollis。在 enim elit, mattis eget vestibulum at, faucibus at felis。 Sed ultrices posuere libero,id consectetur nibh lacinia vel。 Maecenas non mi eu dui sodales commodo et a mi。 Aliquam erat volutpat。 Vestibulum interdum, lectus eget cursus elementum, ligula metus iaculis libero, ac accumsan sapien eros vitae eros。 Quisque vulputate massa quis augue mollis pharetra ac eu risus。 Donec tristique purus nec erat tristique hendrerit。整数 consectetur nibh nec augue ornare tempus varius eros imperdiet。 Quisque venenatis condimentum nisi, facilisis elementum lorem molestie eu。 Donec id elit nec arcu tincidunt consectetur id sit amet velit。 Nulla ut purus sapien。

    Praesent 一个 Tortor magna。 Lorem ipsum dolor sit amet, consectetur adipiscing elit。 Nam non tincidunt mauris。 euismod 中的 Morbi euismod sollicitudin ipsum。暂停潜力。 Ut semper, risus viverra porta semper, urna nisi placerat erat,位于 velit 的 luctus ante mi。 Sed ac congue purus。 Curabitur 坐在 amet lacinia elit。 Sed ac eros 精英。在 hac habitasse platea dictumst 中。在 dolor viverra non dictum dui fringilla 的 feugiat ipsum 中。 Duis quis urna mi。 Mauris non tellus non augue pretium commodo vitae adipiscing nulla。 Donec aliquet libero 坐 amet ipsum pharetra 非发酵 sapien euismod。 Quisque commodo erat vel nisl tristique placerat。 Morbi eros urna, dignissim pulvinar ullamcorper sed, convallis at risus。 Phasellus quis convallis lectus。 Etiam eu aliquet odio。 Integer diam neque, tincidunt ac semper quis, gravida eget eros。 Praesent augue orci, sagittis vitae semper ut, accumsan in turpis。

    Nam ac erat 坐在 ac quam 的 amet metus congue ullamcorper。 Sed auctor fringilla ligula、vitae iaculis mauris tempus 等。 Etiam pulvinar、odio non egestas mollis、odio ligula elementum dolor、non auctor nulla leo sit amet orci。 Aenean leo urna,congue id tristique in,consequat in augue。 Morbi vel condimentum dui。 Curabitur eu augue felis,sed luctus nisi。 Pellentesque eu tortor non erat placerat iaculis a nectortor。 Maecenas ultrices tristique lectus et 发酵。 Duis et faucibus 直径。 Vivamus vitae nibh neque。 sed massa odio, adipiscing at ultricies non, viverra a urna。 Praesent posuere dui in nibh pulvinar vitae lacinia est congue。 Ut congue vestibulum arcu,eget venenatis augue scelerisque quis。 Vivamus augue libero,molestie ut condimentum ac,pretium v​​itae nunc。

    Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque 居民 morbi tristique senectus et netus et malesuada 名声 ac turpis egestas。 Lorem ipsum dolor sit amet, consectetur adipiscing elit。 Vivamus sodales varius orci a tempus。暂停潜力。 Sed pellentesque euismod erat,et tincidunt lectus vehicula quis。 Mauris blandit infantum urna,一种 posuere risus vestibulum feugiat。 Sed pulvinar, lacus quis dignissim ullamcorper, odio arcu euismod massa, in suscipit odio ipsum quis sapien。前庭 nec neque vel leo tincidunt sollicitudin。 Quisque et est ut erat blandit dapibus a mollis metus。 Etiam turpis duis。

    【讨论】:

      【解决方案2】:

      4k 是 4096 字节。因此,您可以存储 4096 个单字节字符(ASCII)。

      但是,当您要存储哈希值时,最好使用原始哈希值的 Base64 编码值。因此,如果您使用十六进制值,您可以存储每个字符 6 位而不是每个字符仅存储 4 位。

      【讨论】:

      • Base64 每个字符使用 6 个可用位(64 个值)。十六进制每个字符使用 4 个可用位(16 个值)。
      【解决方案3】:

      存储为名称/值对,每个 MD5 将至少有 36 个字符(假设它存储为具有单个字符名称的十六进制字符串,md5+name+"="+separator = 32+2+1+1),更长的时间,因为你会做得很好并使用有意义的名字......在 36 个字符中,你可以在 4K 中容纳 117 个字符(4096 个字符,假设始终使用 ASCII 字符),但请确保为来自服务器的会话 id cookie 等开销留出空间-脚本环境等。

      SHA1 会更长(160 位,而不是 128),而 SHA2 会更长(在 224 和 512 位之间,具体取决于所使用的具体变体)。使用 Base64 编码或类似编码而不是普通十六进制将减小大小(MD5 为 22 个字符,假设没有填充,而不是 32 个)。

      就以这种方式使用 cookie 而言,主要问题是某些用户完全关闭了 cookie(甚至是第一方会话 cookie),尽管这可能不是问题,具体取决于您的目标受众。

      您还需要确保在用户可能使用的所有浏览器中进行测试,确保一个窗口中的脚本对 cookie 的更新确实会更新其他窗口中脚本可用的数据,而无需客户端/服务器往返。

      您还需要培训 Internet Explorer 用户了解使用 ctrl-N 或链接启动新 IE 窗口与通过从开始菜单启动 IE 启动新进程之间的区别。在后一种情况下,cookie 几乎肯定不会与其他窗口共享,直到发生往返。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-21
        • 2013-11-08
        • 2018-10-09
        • 1970-01-01
        • 2011-05-04
        相关资源
        最近更新 更多