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

HTML 内容规则

网页中的 HTML 内容可进一步分成属性、表单和 applet。相应地,HTML 内容规则分为以下几类:

HTML 内容属性规则

该规则用于确定标记都有哪些属性的值需要重写。属性值可以是简单 URL,也可以是 JavaScript 或 DHTML 内容。例如:

本节说明以下内容:

属性规则语法

<Attribute name="attributeName" [tag="*" valuePatterns="" source="*" type="URL|DHTML|DJS"]/>

其中:

attributeName 是属性的名称(强制项)

tag 是属性所属的标记(可选项,默认值是 *,指任何标记)

valuePatterns 参见在规则中使用模式匹配

source 指定在其中定义该属性的页的 URI(可选项,默认值是 *,指在任何页中)

type 指定值的类型(可选项)。它们可以是:

URL - 简单 URL(默认值)。

DHMTL - DHTML 内容。这种内容以标准 HTML 内容的形式显示,并且用于 Microsoft HTC 格式文件。

DJS - JavaScript 内容。所有 HTML 事件处理程序(如 onClick 和 onMouseover)都用此 HTML 属性嵌入 JavaScript。

属性规则示例

假定页的基 URL 为:

http://mymachine.intranet.com/mypage.html

页面内容:

<a href="http://mymachine.intranet.com/mypage.html">

规则

<Attribute name="href"/>
或
<Attribute name="href" tag="a"/>

输出

<a href=gateway-URL/http://mymachine.intranet.com/myhome.html>

描述

由于要重写的 URL 已是一个绝对 URL,所以只在此 URL 前加上了网关 URL。

DJS 属性示例

假定页的基 URL 为:

http://abc.sesta.com/focus.html

页面内容:

<Form>

<input TYPE=TEXT SIZE=20 value=focus onClick="Check(\q/focus.html\q,\qfocus\q);return;">

</Form>

规则

<Attribute name="onClick" type="DJS"/>
<Function type="URL" name="Check" paramPatterns="y,"/>

输出

<Form>

<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check(\q
gateway-URL
/http://abc.sesta.com/focus.html\q,\qfocus\q);return;">

</Form>

描述

需要两项规则来重写指定的页内容。第一项规则确定 onClick JavaScript 标志。第二项规则确定 check 函数需要重写的参数。在本例中,只会重写第一个参数,因为 paramPatterns 用值 y 代替了第一个参数。

会在所需参数前加上网关 URL 以及这些 JavaScript 标志所在页的基 URL。

HTML 内容的表单规则

用户浏览的 HTML 页可能会包含表单。一些表单元素可能会以 URL 作为值。

本节分为下列各小部分:

表单规则语法

<Form name="form1" field="visit" [valuePatterns="" source="*"]/>

其中

name 是表单的名称(强制项)

field 是表单中的字段,其中含有需要重写的值(强制项)

valuePatterns 参见在规则中使用模式匹配

source 是该表单定义所在 html 页的 URL(可选项,默认值是 *,指在任何页中)

表单规则示例

假定页的基 URL 为:

http://test.siroe.com/testcases/html/form.html

页内容

假定页 URI 是 form.html,并且它位于服务器的根目录下。

<form name=form1  method=POST action=
"http://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 value="0|1234|/test.html">
</form>

要重写 form1 中名为 abc1 的隐藏字段值中出现的 /text.html,需要下列规则。

规则

<Form source="*/form.html" name="form1" 
field="abc1" valuePatterns="0|1234|"/>
<Attribute name="action"/>

输出

<FORM name="form1" 
method="POST" action="gateway-URL/
http://test.siroe.com/testcases/html/form.html">
<input type=hidden name=abc1 
value="0|1234|gateway-URL/
http://test.siroe.com/test.html">
</FORM>

描述

action 标记是用某些已定义的 HTML 属性规则进行重写的。

输入标记属性值的 value 的重写方式如输出中所示。将会查找指定的 valuePatterns,并通过在前面加上网关 URL 以及页的基 URL 来重写紧随在匹配的 valuePatterns 之后的所有内容。参见在规则中使用模式匹配

HTML 内容的 Applet 规则

单个网页可以包含许多 applet,而且每个 applet 可以包含许多参数。重写器将用规则中指定的值与 applet 的 HTML 定义进行匹配,并修改 applet 参数定义中出现的 URL 值。此替换在服务器处执行,用户浏览特定网页时并不会执行。此项规则会确定并重写 applet 以及 HTML 内容对象标记中的参数。

本节分为下列各小部分:

Applet 规则语法

<Applet code="ApplicationClassName/ObjectID
" param="parametername" [valuePatterns="" source="*"] />

其中

code 是 applet 或对象类的名称(强制项)

param 是值需要重写的参数的名称(强制项)

valuePatterns 参见在规则中使用模式匹配

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

Applet 规则示例

假定页的基 URL 为:

http://abc.siroe.com/casestudy/test/HTML/applet/rule1.html

页面内容:

<applet codebase="appletcode" code="RewriteURLinApplet.class" archive="/test.jar">
<param name=Test1 value="/index.html">
</applet>

规则

<Applet source="*/rule1.html" code=
"RewriteURLin*.class" param="Test*"/>

输出

<APPLET codebase="gateway-URL
/http://abc.siroe.com/casestudy/test/HTML/
applet/appletcode" code="RewriteURLinApplet.class"
archive="/test.jar"><param name="Test1" value="
gateway-URL/http:
//abc.siroe.com/index.html">
</APPLET>

描述

由于 <Attribute name="codebase"/>default_gateway_ruleset 中的一项已定义规则,因此会重写 codebase 属性

名称以 Test 开头的所有参数均会被重写。并且,会在 param 标记的 value 属性前加上 applet 代码所在页的基 URL 以及网关 URL。

在规则中使用模式匹配

您可以使用 valuePatterns 字段实现模式匹配并指定语句中需要重写的特定部分。

如果指定 valuePatterns 作为规则的一部分,将会重写紧随在匹配模式之后的所有内容。

请考虑下面的表单规则示例。

<Form source="*/source.html
" name="form1" field="visit
" [valuePatterns="0|1234|"]/>

其中

source 是显示表单的 html 页的 URL。

name 是表单的名称。

field 是表单中的字段,需要重写它的值。

valuePatterns 指示需要重写字符串中的哪个部分。将会重写 valuePatterns 后出现的所有内容(可选项,默认值是 "",指需要重写整个值)

在 valuePatterns 中指定专用字符

可以通过使用反斜杠对专用字符进行转义来指定这些字符。例如:

<Form source="*/source.html " name="form1" field=" visit" [valuePatterns="0|1234| \\;original text|changed text"]/>

在 valuePatterns 中使用通配符

您可以使用通配符星号 (*) 字符来实现重写的模式匹配。

不能在 valuePatterns 字段中仅指定一个 *。因为 * 表示与所有文本匹配,所以 valuePattern 后面没有文本。这样,重写器就没有要重写的文本。您必须将 * 与另一字符串连起来使用,例如 *abc。此时,会重写紧随在 *abc 之后的所有内容。


注 –

可在规则的任何字段中使用星号 (*) 作为通配符。不过,规则中的所有字段不能全都包含 *。如果所有字段都包含 *,则会忽略该规则。不会显示错误消息。


可以与原始语句中出现的分隔符(分号或逗号)联合使用 * 或 ** 来分隔多个字段。一个星号 (*) 匹配任何不进行重写的字段,而两个星号 (**) 匹配任何需要重写的字段。

在 valuePatterns 中使用通配符列出了 * 通配符的一些用法示例。

表 4–1 * 通配符用法示例

URL 

valuePatterns 

描述 

url1, url2, url3, url4

valuePatterns = "**, *, **, *"

由于 ** 指示了要重写的部分,因此会重写 url1url3

XYZABChttp://host1.sesta.com/dir1.html

valuePatterns = "*ABC"

仅重写 http://host1.sesta.com/dir1.html 部分。需要重写 *ABC 后的所有内容。

"0|dir1|dir2|dir3|dir4|test|url1

valuePatterns = "*|*|**|*|**|*|"

重写 dir2dir4url1。最后一个需要重写的字段不必用 ** 指出。