1

我正在尝试在 CSP 中存储临时数据。

由于并发问题,我尽量避免使用 ^Global 和 %session,并且由于安全问题而避免使用 Javascript 变量。

然后我遇到了困惑。以下代码都在一个 CSP 中:

<script language="Cache" runat="server">
s test = 1
</script>
<script language="Cache" method="Update">
s test = 2
</script>
<script language="Javascript">
function init(){
 #server(..Update())#
 alert("#(test)#");
}
</script>
<body onload="init();"></body>
  1. 在页面加载期间,警报返回test为“1”而不是“2”。这里发生了什么?

  2. 还有其他更好的方法可以将此类数据存储在 CSP 中吗?

4

1 回答 1

1

#()# 在页面渲染期间执行。

所以你得到如下页面。右键单击生成的页面并查看其源代码。

<script language="Javascript">
function init(){
 #server(..Update())#
 alert("1");
}
</script>

此外,考虑到通常不同的 CSP 请求由不同的服务器进程处理,因此在全局变量中处理状态并不是一个好主意。

如果您需要为每个用户会话保留数据,最好的方法是使用 %session

于 2019-03-28T16:13:55.990 回答