Sun Java System Portal Server Secure Remote Access 7.2 管理指南

变量

变量的通用语法为:

<Variable name="variableName" [type="URL|EXPRESSION|DHTML|DJS|SYSTEM" source="*"]>

根据 JavaScript 变量所含值的类型,可将它们细分为以下 5 类:

URL 变量

变量值为可作为 URL 对待的简单字符串。

本节分为下列各小部分:

URL 变量语法

<Variable name="variableName" type="URL" [source="*"]>

其中

variableName 是变量的名称。variableName 的值会被重写(强制项)

type 是 URL 变量(强制项,其值必须是 URL)

source 是该 JavaScript 变量所在页的 URI(可选项,默认值是 *,指在任何页中)

URL 变量示例

假定基 URL 为:

http://abc.siroe.com/tmp/page.html

页内容

<script LANGUAGE="Javascript">
<!--
//URL Variables
var imgsrc1="/tmp/tmp.jpg";
var imgsrc2="http://srap.sesta.com/tmp/tmp.jpg";
var imgsrc3=imgsrc2;
//-->
</SCRIPT>

规则

<Variable name="imgsrc*" type="URL"/>

输出

<script LANGUAGE="Javascript">
<!--
//URL Variables
var imgsrc="gateway-URL/http://abc.siroe.com/tmp/tmp.jpg";
var imgsrc="gateway-URL/http://srap.sesta.com/tmp/tmp.jpg";
var imgsrc3=imgsrc2;
//-->
</SCRIPT>

描述

会重写 URL 类型并且名称以 imgsrc 开头的所有变量。对于输出中的第一行,在其前面加上了网关 URL 以及变量所在页的基 URL。第二行已包含绝对路径,因此只在其前面加上了网关 URL。由于第三个 var imagsrc2 的值不是字符串,而是其他 JavaScript 值,所以不会对其进行重写。

EXPRESSION 变量

表达式变量的右侧是一个表达式。该表达式的结果是一个 URL。由于重写器无法对服务器上的此类表达式求值,所以它会向 HTML 页追加一个 JavaScript 函数 (psSRAPRewriter_convert_expression)。该函数将此表达式视为一个参数,并在客户机浏览器中对其进行求值以得出所需的 URL。

如果不确定语句中包含的是简单 URL 还是 EXPRESSION URL,则使用 EXPRESSION 规则,因为它可以处理这两种情形。

本节分为下列各小部分:

EXPRESSION 变量语法

<Variable name="variableName" [type="EXPRESSION" source="*"]/>

其中

variableName 是值为表达式的 JavaScript 变量的名称(强制项)

type 是 JavaScript 变量的类型(可选项,默认值是 EXPRESSION)

source 是页的 URI(可选项,默认值是 *,指任何源)

EXPRESSION 变量示例

假定页的基 URL 为:

http://abc.siroe.com/dir1/dir2/page.html

页内容

<script LANGUAGE="Javascript">
<!--
//Expression variables
var expvar= getURIPreFix() + "../../images/graphics"+".gif";
document.write("<A HREF="+expvar+">Link to XYZ content</A><P>")
var expvar="../../images/graphics"+".gif";
//-->
</SCRIPT>

规则

<Variable name="expvar" type="EXPRESSION"/>
或
<Variable name="expvar"/>

输出

var expvar=psSRAPRewriter_convert_expression(getURIPreFix()
 + "../../images/graphics"+".gif");document.write("<a href="+expvar+">>
Link to XYZ content</A><P>")var expvar="gateway-URL/http://abc.siroe.com/images/graphics"+".gif";

描述

会在第一行的表达式变量 expvar 右侧的前面加上函数 psSRAPRewriter_convert_expression。该函数会在运行时处理此表达式并重写相应内容。在第三行中,值被重写为一个简单的 URL。

DHTML(动态 HTML)变量

这些变量是包含 HTML 内容的 JavaScript 变量。

本节分为下列各小部分:

DHTML 语法

<Variable name="variableName" type="DHTML" [source="*"]/>

其中

variableName 是具有 DHTML 内容的 JavaScript 变量的名称(强制项)

type 是变量的类型(强制项,其值必须是 DHTML)

source 是页的 URL(可选项,默认值是 *,指在任何页中)

DHTML 示例

假定页的基 URL 为:

http://abc.sesta.com/graphics/set1/
graphics/jsscript/JSVAR/page.html

页内容

<script LANGUAGE="Javascript">
<!--
//DHTML Var
var dhtmlVar="<a href=../../images/test.html>"
var dhtmlVar="<a href=/images/test.html>"
var dhtmlVar="<a href=images/test.html>"
//-->
</SCRIPT>

规则

<Variable name="dhtmlVar" type="DHTML"/>
<Attribute name="href"/>
或
<Attribute name="href" tag="a"/>

输出

<script LANGUAGE="Javascript">
<!--
//DHTML Var
var dhtmlVar="<a href=gateway-URL
/http://abc.sesta.com/graphics/
set1/graphics/images/test.html>"
var dhtmlVar="<a href=gateway-URL/
http
://abc.sesta.com/images/test.html>"
var dhtmlVar="<a href=gateway-URL/
http://abc.sesta.com/graphics/set1/
graphics/jscript/JSVAR/images/test.html>"
//--></SCRIPT>

描述

JavaScript 解析器会将 dhtmlVar 的值作为 HTML 内容读取,并通过 HTML 解析器发送此内容。HTML 解析器会应用其中有 href 属性规则匹配的 HTML 规则,因此 URL 会被重写。

DJS(动态 JavaScript)变量

这些变量是包含 JavaScript 内容的 JavaScript 变量。

本节分为下列各小部分:

DJS 语法

<Variable name="variableName" type="DJS" [source="*"]/>

其中

variable 是值为 javascript 的 JavaScript 变量。

DJS 示例

假定页的基 URL 为:

http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html

页内容

//DJS Var
var dJSVar="var dJSimgsrc=\q/tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=\q../tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=
\qhttp://abc.sesta.com/tmp/tmp.jpg\q;"

规则

<Variable name="DJS">dJSVar/>
<Variable name="URL">dJSimgsrc/>

输出

//DJS Var - need 2 rules
var dJSVar="var dJSimgsrc=\qgateway-URL
/http://abc.sesta.com/tmp/tmp.jpg\q;"var dJSVar="var dJSimgsrc=\q
gateway-URL/http
://abc.sesta.com/dir1/dir2/dir3/jscript/tmp/tmp.jpg\q;"
var dJSVar="var dJSimgsrc=\qgateway-URL/
http://abc.sesta.com/tmp/tmp.jpg\q;"

描述

这里需要两项规则。第一项规则用于查找动态 JavaScript 变量 dJSVar。该变量的值同样是 URL 类型的 JavaScript。第二项规则用于重写该 JavaScript 变量的值。

SYSTEM 变量

这些变量是指不是由用户声明且只得到有限支持的变量。它们可用作 JavaScript 标准的一部分。例如,window.location.pathname

本节分为下列各小部分:

SYSTEM 变量语法

<Variable name="variableName" type="SYSTEM" [source="*"]/>

其中

variableName 是 JavaScript 系统变量(强制项,其值可以是与以下模式匹配的任何值:document.URL、document.domain、location、doument.location、location.pathname、location.href、location.protocol、location.hostname、location.host 和 location.port。上述所有模式都存在于 generic_ruleset 中。不要修改这些系统变量规则。)

type 指定系统类型值(强制项,且值为 DJS)

source 是此页的 URI(可选项,默认值是 *,指在任何页中)

SYSTEM 变量示例

假定页的基 URL 为:

http://abc.siroe.com/dir1/page.html

页内容

<script LANGUAGE="Javascript">
<!--
//SYSTEM Var
alert(window.location.pathname);
//-->
</SCRIPT>

规则

<Variable name="window.location.pathname" type="SYSTEM"/>

输出

</SCRIPT>
<SCRIPT LANGUAGE="Javascript">
<!--
//SYSTEM Var
alert(psSRAPRewriter_convert_pathname(window.location.pathname));
//-->
</SCRIPT>

描述

重写器会查找与规则匹配的系统变量,然后在其前面加上 psSRAPRewriter_convert_system 函数。该函数会在运行时处理此系统变量并相应地重写最终得到的 URL。