我们可以在 javascript 的帮助下在 HTML 页面中进行会话处理吗?
如果是,如何?如果不是,为什么?
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);
}
会话是一种服务器端机制,因此您需要一个服务器逻辑来启动和管理会话。
今天(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 中的数据不会受到伤害。
而术语“会话”通常用于服务器端机制,如果没有一些服务器端脚本自然不能使用,如果你只想有一个登录跟踪,你可以在 JS 中实现一个伪会话:
setinterval(),检查隐藏字段中的值是否早于允许的会话时间不过要小心,
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.
我们可以在 javascript 的帮助下在 HTML 页面中进行会话处理吗?
间接的。使用 AJAX 调用可识别会话的服务器端 HTTP 处理程序。jQuery.ajax()使 AJAX 变得简单,并且有很多示例。
例如,这是在 .Net 中通过调用 WCF 端点、Web 服务或什至可以访问维护会话状态的同一进程的页面来完成的。
您可以通过这种方式在会话中获取/设置值。