【问题标题】:Sharing Cookie among browser tabs without refreshing tab在浏览器标签之间共享 Cookie 而无需刷新标签
【发布时间】:2014-05-29 12:33:15
【问题描述】:

我需要在浏览器的不同选项卡(同一应用程序)之间共享 Cookie 值。我解决了问题,发现如果第二个选项卡被刷新,其他选项卡只能使用由第一个选项卡设置的 cookie。但就我而言,我负担不起刷新标签(&我不能使用会话)。有没有办法以其他方式分享cookie? (即,一旦在一个选项卡上设置了 cookie,另一个选项卡就可以使用它,无需刷新)

SO 的另一个帖子说,one must continuesly poll cookie, in order to share。但我不明白,poll 是什么意思。这个 poll 对我有帮助吗?

【问题讨论】:

  • 那么在所有选项卡中刷新这些 cookie 的目的是什么?你可以使用 SignalR 插件。
  • @DotNetIsMyPower 我没有提到“刷新”cookie,而是在不同的浏览器选项卡之间共享 cookie。 SignalR 对我有帮助吗?
  • 我不确定我是否理解首先需要创建一个要共享的 cookie。如果您在一个选项卡中为对象设置一个值,它应该在所有选项卡中都可用,对吧?您至少可以将问题从一个选项卡强制到另一个选项卡。
  • @Dean.DePue 是的,对。它应该在其他选项卡中立即可用,无需刷新。这:stackoverflow.com/questions/23926873/… 实际上是我要解决的问题。我决定饼干

标签: jquery asp.net-mvc-4 cookies


【解决方案1】:

轮询将检查服务器或其他后端服务以查看是否有新的 cookie。

所以选项卡 1 创建了一个 cookie,并且您通知服务器有一个新的 cookie。当Tab 2“轮询”服务器即通过常规AJAX请求时,您可以在选项卡2上设置cookie。

我相信这也可以通过 webstorage 完成,因为同一页面的 2 个选项卡共享相同的 webstorage,因此您可以“轮询”webstorage 而无需 ajax 也不需要通过网络发送任何内容。这更快,但是您必须在第二个或“侦听”选项卡中手动设置 cookie。或者,如果您将网络存储用于所有存储,那么如果您不需要它们来向场外/非客户端/在线服务/服务器表明自己的身份,则可以完全删除 cookie。

http://www.w3schools.com/html/html5_webstorage.asp

Can an AJAX response set a cookie?

【讨论】:

  • 谢谢罗伯。你能告诉我,当设置新的 cookie 时,我如何轮询服务器?我试着看,但没有任何帮助。 (我正在使用 MVc 4,并且正在设置 cookie 并在 Jquery 脚本标签中获取)。
  • 在 2 个标签中尝试这个 jsfiddle,它应该可以工作。至少它在 Chrome 中对我有用。 jsfiddle.net/robschmuecker/8vXKC
【解决方案2】:

不知何故,在我的场景中轮询服务器无济于事(不同的选项卡,相同的应用程序)。我使用一些名为store.js 的库解决了它。它不需要轮询服务器和其他东西,相反,只要在任何打开的选项卡上设置 cookie,它就会立即在选项卡之间共享。最重要的是,我喜欢的是 store.js 在可用时使用localStorage,并在IE6IE7 中使用userData 行为。没有闪光灯来减慢您的页面加载速度。没有 cookie 来增加您的网络请求。 store.js 依赖 JSON 序列化到磁盘。使用起来非常简单。

使用示例:

store.set('username', 'joe')
document.write('username: ' + store.get('username') + '<br />')
store.remove('username')
store.clear()
store.set('user', { name: 'joe', likes: 'javascript' })
var user = store.get('user')
document.write(user.name + ' likes ' + user.likes)

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2013-08-05
    相关资源
    最近更新 更多