【问题标题】:Session handling in HTML page using JavaScript [closed]使用 JavaScript 在 HTML 页面中进行会话处理 [关闭]
【发布时间】:2020-09-09 15:04:48
【问题描述】:

我们可以在 javascript 的帮助下在 HTML 页面中进行会话处理吗?

如果是,如何?如果不是,为什么?

【问题讨论】:

  • 会话处理是什么意思?如果您的意思是这样,您可以设置和编辑 cookie。

标签: javascript html session


【解决方案1】:

javascript 仅支持 cookie。您可以将它们设置为跟踪用户会话,但它们不支持使用会话。

function createCookie(name,value,days) {
    var expires = "";
    if (days) {
       var date = new Date();
       date.setTime(date.getTime()+(days*24*60*60*1000));
       expires = "; expires="+date.toGMTString();
    }
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1,c.length);
        }
        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length,c.length);
        }
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

来源:http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/19283/how-to-save-session-values-in-javascript

【讨论】:

    【解决方案2】:

    会话是一种服务器端机制,因此您需要一个服务器逻辑来启动和管理会话。

    【讨论】:

      【解决方案3】:

      今天(2017 年 9 月)我建议使用 HTML5 网络存储功能。

      引用 W3C:

      HTML 网络存储;比饼干好。 什么是 HTML 网络存储?

      借助 Web 存储,Web 应用程序可以在本地存储数据 用户的浏览器。

      在 HTML5 之前,应用程序数据必须存储在 cookie 中,包括 在每个服务器请求中。网络存储更安全,而且容量更大 的数据可以存储在本地,而不会影响网站性能。

      与 cookie 不同,存储限制要大得多(至少 5MB),并且 信息永远不会传输到服务器。

      Web 存储是按来源(按域和协议)的。所有页面,来自 一个来源,可以存储和访问相同的数据。

      有关它的工作原理以及如何在此处实施的更多详细信息:https://www.w3schools.com/html/html5_webstorage.asp

      MDN 文档也是获取更多详细信息的好来源:https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

      显然加密存储在 Web Storage 中的数据不会有任何坏处。

      【讨论】:

        【解决方案4】:

        虽然术语“会话”通常用于服务器端机制,但如果没有一些服务器端脚本自然不能使用,如果您只想进行登录跟踪,则可以在 JS 中实现伪会话:

        • 实现一个以用户登录时间戳为值的隐藏字段
        • 每次用户进行重要操作时,使用新时间戳更新此字段
        • 使用 setinterval() 运行伪 cronjob,检查隐藏字段中的值是否早于允许的会话时间
        • 如果它较旧,请执行会话超时代码

        不过要小心,

        1. 这种机制可能会对您的客户端浏览器造成一些压力,具体取决于您的站点和参数(观看的操作、检查间隔的频率)
        2. 如果用户关闭浏览器窗口/选项卡,这将无法生存

        【讨论】:

          【解决方案5】:

          JS 不能直接访问会话。它存储在服务器上,而 javascript 在客户端上运行。但可以间接完成,例如,将其存储在隐藏字段中,将其提交给服务器,然后检索隐藏字段中的值并将其分配给会话。

          【讨论】:

            【解决方案6】:

            我们可以在 javascript 的帮助下在 HTML 页面中进行会话处理吗?

            间接的。使用 AJAX 调用可识别会话的服务器端 HTTP 处理程序。 jQuery.ajax() 让 AJAX 变得简单,并且有很多例子。

            例如,这是在 .Net 中通过调用 WCF 端点、Web 服务,甚至是可以访问维护会话状态的同一进程的页面来完成的。

            您可以通过这种方式在会话中获取/设置值。

            【讨论】:

              猜你喜欢
              • 2014-10-19
              • 1970-01-01
              • 2018-02-28
              • 2013-01-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多