【发布时间】:2020-09-09 15:04:48
【问题描述】:
我们可以在 javascript 的帮助下在 HTML 页面中进行会话处理吗?
如果是,如何?如果不是,为什么?
【问题讨论】:
-
会话处理是什么意思?如果您的意思是这样,您可以设置和编辑 cookie。
标签: javascript html session
我们可以在 javascript 的帮助下在 HTML 页面中进行会话处理吗?
如果是,如何?如果不是,为什么?
【问题讨论】:
标签: javascript html session
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);
}
【讨论】:
会话是一种服务器端机制,因此您需要一个服务器逻辑来启动和管理会话。
【讨论】:
今天(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 中的数据不会有任何坏处。
【讨论】:
虽然术语“会话”通常用于服务器端机制,但如果没有一些服务器端脚本自然不能使用,如果您只想进行登录跟踪,则可以在 JS 中实现伪会话:
setinterval() 运行伪 cronjob,检查隐藏字段中的值是否早于允许的会话时间不过要小心,
【讨论】:
JS 不能直接访问会话。它存储在服务器上,而 javascript 在客户端上运行。但可以间接完成,例如,将其存储在隐藏字段中,将其提交给服务器,然后检索隐藏字段中的值并将其分配给会话。
【讨论】:
我们可以在 javascript 的帮助下在 HTML 页面中进行会话处理吗?
间接的。使用 AJAX 调用可识别会话的服务器端 HTTP 处理程序。 jQuery.ajax() 让 AJAX 变得简单,并且有很多例子。
例如,这是在 .Net 中通过调用 WCF 端点、Web 服务,甚至是可以访问维护会话状态的同一进程的页面来完成的。
您可以通过这种方式在会话中获取/设置值。
【讨论】: