Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 清除选项卡关闭时的会话值_Ruby On Rails_Browser_Session Variables - Fatal编程技术网

Ruby on rails 清除选项卡关闭时的会话值

Ruby on rails 清除选项卡关闭时的会话值,ruby-on-rails,browser,session-variables,Ruby On Rails,Browser,Session Variables,据我所知,当用户关闭浏览器时,会话变量将被清除。当用户关闭浏览器中的选项卡时,是否仍要清除会话变量 我询问的原因是,如果用户在站点上并关闭选项卡而不是浏览器,并且用户在同一浏览器会话中通过单独的选项卡返回站点,我需要区分两次访问。会话变量是服务器端的,而选项卡关闭是客户端的操作,因此,您必须以某种方式向服务器发送一个信号,以清除这些会话变量 对我来说,最明显的方法是使用浏览器的onbeforeunload方法,并向服务器发送一些内容以清除会话 不过,这是一个危险的领域。是否确实不允许用户同时打开

据我所知,当用户关闭浏览器时,会话变量将被清除。当用户关闭浏览器中的选项卡时,是否仍要清除会话变量


我询问的原因是,如果用户在站点上并关闭选项卡而不是浏览器,并且用户在同一浏览器会话中通过单独的选项卡返回站点,我需要区分两次访问。

会话变量是服务器端的,而选项卡关闭是客户端的操作,因此,您必须以某种方式向服务器发送一个信号,以清除这些会话变量

对我来说,最明显的方法是使用浏览器的onbeforeunload方法,并向服务器发送一些内容以清除会话


不过,这是一个危险的领域。是否确实不允许用户同时打开和使用站点的多个选项卡?因为,如果我在两个选项卡中打开您的站点,此技术将在一个选项卡关闭时清除会话,使另一个选项卡无效(不是无用的,只是可能已经从该页面下拉出地毯,现在会话已结束)。

查看以下链接以获得最佳答案:

您可以做的是在url的末尾附加一些随机文本,并将其存储以供参考。如果用户来自新选项卡,并且没有附加随机文本,您可以确定来自不同选项卡的用户