我们可以在 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 服务或什至可以访问维护会话状态的同一进程的页面来完成的。
您可以通过这种方式在会话中获取/设置值。