在浏览器标签之间共享Cookie而不刷新标签

时间:2014-05-29 12:33:16

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

我需要在浏览器的不同标签(同一个应用程序)之间共享Cookie值。我一起工作,发现其他选项卡只能使用cookie,如果第二个选项卡刷新,则由第一个选项卡设置。但在我的情况下,我不能提供令人耳目一新的标签(& i不能使用会话)。有没有办法以其他方式共享cookie? (即,在一个选项卡上设置cookie,另一个选项卡可以使用它,而无需刷新)

SO的另一篇文章说one must continuesly poll cookie, in order to share。但我无法理解poll的含义。在我的情况下,民意调查这件事有用吗?

2 个答案:

答案 0 :(得分:1)

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

因此,选项卡1会创建一个cookie,并通知服务器新的cookie。标签2"民意调查"服务器,即通过常规的ajax请求,您可以在选项卡2上设置cookie。

这也可以通过webstorage完成我相信同一页面的2个标签共享相同的网络存储,因此您可以" poll" webstorage不需要ajax,也不需要通过网络发送任何东西。这样会更快,但是你必须在第二次或者#34;听"手动设置cookie。标签。或者,如果您将webstorage用于所有存储,那么如果您不需要它们来识别自己的异地/客户端/在线服务/服务器,则可以完全删除cookie。

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

Can an AJAX response set a cookie?

答案 1 :(得分:1)

不知何故,轮询服务器在我的场景中无法帮助(不同的标签,同一个应用程序)。我用一些名为store.js的库解决了它。它不需要轮询服务器和内容,相反,只要在任何打开的选项卡上设置cookie,就可以立即在选项卡上立即共享cookie。最重要的是,我喜欢这个是store.js在可用时使用localStorage,并且回退到 IE6 IE7中的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)