6

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

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

4

6 回答 6

5

javascript only support cookies. You can set them up to keep track of a user session but they do not support the use of sessions.

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);
}

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

于 2012-05-07T09:36:04.620 回答
3

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

于 2012-05-07T09:32:24.107 回答
3

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

引用 W3C:

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

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

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

与 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 中的数据不会受到伤害。

于 2017-09-20T21:38:32.237 回答
2

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

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

不过要小心,

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

Sessions can't be accessed by JS directly. It's stored on server, while javascript is running on client. But can be done indirectly, e.g., store it in a hidden filed, submit it to the server, and retrieve and assign the values in hidden filed to session.

于 2012-05-07T09:35:07.960 回答
1

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

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

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

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

于 2012-05-07T09:36:53.047 回答