我读过堆栈溢出的另一个答案,其中解释了jsp页面中由spring mvc存储的会话变量的使用。我可以从js前端访问由spring mvc存储的会话变量
我想知道的是,我可以从HTML前端的JavaScript代码中访问这样的会话变量,以使用Spring的后端Web应用程序吗?如果是,那么我如何从JavaScript访问会话变量?
我读过堆栈溢出的另一个答案,其中解释了jsp页面中由spring mvc存储的会话变量的使用。我可以从js前端访问由spring mvc存储的会话变量
我想知道的是,我可以从HTML前端的JavaScript代码中访问这样的会话变量,以使用Spring的后端Web应用程序吗?如果是,那么我如何从JavaScript访问会话变量?
不,不是直接。
考虑到会话变量存在于内存中的服务器上和JavaScript在客户在浏览器上执行。一旦清楚了,还应该清楚为什么你不能直接访问客户端JavaScript中的会话变量。
如果您需要在JavaScript代码中读取会话变量,那么可以采取一些方法。
您将不得不迭代会话变量并打印出一个脚本,该脚本将会话属性设置为数组。
用于例如,在你的JSP代码:
添加以下行
<script>
var session= new Array();
<%
for (Enumeration e = session.getAttributeNames() ; e.hasMoreElements() ;) {
Object obj= e.nextElement();
%>session['<%=obj%>']='<%=(String)session.getAttribute(obj)%>';<%
}
%>
</script>
这是假设你的会话属性是字符串。
现在,您可以访问浏览器会话属性的JavaScript
为如:session['key1']
将给对应的属性在服务器KEY1会话的字符串表示。
参考答案中的第2点,这样的服务很容易被黑客滥用吗?你也可以指点我的一些示例代码为你的观点吗?谢谢 – Arvind