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

HTML 内容示例

HTML 属性示例

Procedure使用 HTML 属性示例

  1. 可从以下位置访问本示例:

    portal-server-URL /rewriter/HTML/attrib/attribute.html

  2. 确保在网关服务的“域和子域的代理”列表中定义了 abc.sesta.comhost1.siroe.com

    如果没有定义该项,则假定采用直接连接,不会在其前面加网关 URL。

    不需要将本范例中指定的规则添加到 default_gateway_ruleset 中,因为该规则已定义。

重写前的 HTML

<html>
Rewriting starts
<head>
<title>TEST PAGE () </title>
</head>
ID-htmlattr.1
<br><br>
1.a href <a href="http://abc.sesta.com/images/logo.gif">http://..</a>
<br><br>
2. href <a href="https://host1.siroe.com">https://..</a>
<br><br>
3. href <a href="../images/logo.gif">../images/</a>
<br><br>
4. href <a href="images/logo.gif">images/..</a> <br><br>
5. href <a href="../../images/logo.gif">../../images/</a> <br><br>
Rewriting ends
</html>

规则

<Attribute name="href"/>

重写后的 HTML

<html>
Rewriting starts
<head>
<title>TEST PAGE () </title>
</head>
ID-htmlattr.1
<br><br>
1. a href <a href="gateway-URL/http://abc.sesta.com/images/logo.gif">http://..</a> <br>

// 由于已在 default_gateway_ruleset 中定义了 <Attrib name="href"/> 规则,所以会重写这个 URL。由于此 URL 已是绝对的,因此只在其前面加上了网关 URL。确保在网关服务的“域和子域的代理”列表中定义了 abc.sesta.com。否则,不会在其前面加网关 URL,因为此时将假定采用直接连接。

2. href <a href="gateway-URL/https://host1.siroe.com">https://..</a>

// 同样,需要在网关服务的“域和子域的代理”列表中定义 host1.siroe.com。否则,不会在其前面加网关 URL,因为此时将假定采用直接连接。

<br><br>
3. href <a href="gateway-URL/portal-server-URL/rewriter/HTML/images/logo.gif">../images/</a>

// 由于指定了相对路径,因此会随所需子目录一同在其前面加上网关 URL 和 portal-server-URL。此链接不会起作用,因为在所提供的示例结构中,HTML 目录下没有指定名为 images 的目录。

<br><br>
4 href <a href="gateway-URL/portal-server-URL/rewriter/HTML/attrib/images/
logo.gif">images/..</a> <br><br>

// 由于指定了相对路径,因此会随所需子目录一同在其前面加上网关 URL 和 Portal Server URL。

5. href <a href="gateway-URL/portal-server-URL/rewriter/images/logo.gif">
../../images/</a> <br><br>

// 由于指定了相对路径,因此会随所需子目录一同在其前面加上网关 URL 和 Portal Server URL。此链接不会起作用,因为在所提供的示例结构中,Rewriter 目录下没有指定名为 images 的目录。

Rewriting ends</html>

HTML 动态 JavaScript 标志示例

本节讨论使用 HTML JavaScript 标志示例

Procedure使用 HTML JavaScript 标志示例:

  1. 可从以下位置访问本示例:

    portal-server-URL /rewriter/HTML/jstokens/JStokens.html

  2. 将本示例中指定的规则添加到“JavaScript 源重写规则”一节的 default_gateway_ruleset 中。

  3. 在 Portal Server 管理控制台中,编辑 Portal Server 配置下的重写器服务中的 default_gateway_ruleset

  4. 从终端窗口中重新启动网关:


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

重写前的 HTML

<html>
<head>
Rewriting starts
<script language="javascript">
function Check(test,ind){
if (ind == \qblur\q)
{alert("testing onBlur")}
if (ind == \qfocus\q)
{alert("testing onFocus")}
}
</SCRIPT>
</head>
<body>
<form>
<input TYPE=TEXT SIZE=20 value=blur onAbort="Check
(\q/indexblur.html\q,\qblur\q);return;">
<input TYPE=TEXT SIZE=20 value=blur onBlur="Check
(\q/indexblur.html\q,\qblur\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onFocus="Check
(\q/focus.html\q,\qfocus\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onChange="Check
(\q/focus.html\q,\qfocus\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onClick="Check
(\q/focus.html\q,\qblur\q);return;">
<br><br>
</form>
</body>
Rewriting ends
</html>

规则

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

注 –

<Function name="URL" name="Check" paramPatterns="y"/> 是 JavaScript 函数规则,在 JavaScript 函数示例中对其进行了详细解释。


重写后的 HTML

<html>
<head>
Rewriting starts
<script language="javascript">
function Check(test,ind){
if (ind == \qblur\q)
{alert("testing onBlur")}
if (ind == \qfocus\q)
{alert("testing onFocus")}
}
</SCRIPT>
</head>
<body>
<form>
<input TYPE=TEXT SIZE=20 value=blur onAbort="Check
(\qgateway URL/portal-server-URL/indexblur.html\q,\qblur\q);return;">
<input TYPE=TEXT SIZE=20 value=blur onBlur="Check
(\qgateway URL/portal-server-URL/indexblur.html\q,\qblur\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onFocus="Check
(\qgateway URL/portal-server-URL/focus.html\q,\qfocus\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onChange="Check
(\qgateway URL/portal-server-URL/focus.html\q,\qfocus\q);return;">
<input TYPE=TEXT SIZE=20 value=focus onClick="Check
(\qgateway URL/portal-server-URL/focus.html\q,\qblur\q);return;">

// 在本示例中所有语句均会被重写,并且在每种情况下都会在前面加上网关 URL 和 Portal Server URL。这是因为在 default_gateway_ruleset 文件中定义了 onAbortonBluronFocusonChangeonClick 的相应规则。重写器会检测 JavaScript 标志,并将其传递给 JavaScript 函数规则以便做进一步处理。示例中所列的第二项规则会通知重写器要重写哪个参数。

</body>
<br>

Rewriting ends

</html>

HTML 表单示例

Procedure使用表单示例

  1. 从以下位置访问此示例:

    portal-server-URL/rewriter/HTML/forms/formrule.html

  2. 确保在网关服务的“域和子域的代理”列表中定义了 abc.sesta.com

    如果没有定义该项,则假定采用直接连接,不会在其前面加网关 URL。

  3. 将本示例中指定的规则添加到“HTML 属性重写规则”一节的 default_gateway_ruleset 中。

  4. 在 Portal Server 管理控制台中,编辑 Portal Server 配置下的重写器服务中的 default_gateway_ruleset

  5. 从终端窗口中重新启动网关:


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

重写前的 HTML 页

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
RW_START
<p>
<form name="form1" method="Post" action=
"http://abc.sesta.com/casestudy/html/form.html">
<input type="hidden" name="name1" value="0|1234|/test.html">
<input type="hidden" name="name3" value="../../html/test.html">
<form name="form2" method="Post" action="
http://abc.sesta.com/testcases/html/form.html"><br>
<input type="hidden" name="name1" value="0|1234|
../../html/test.html"></form>
RW_END </p>
</body>
</html>

规则

<Form source="*" name="form1" field="name1" valuePatterns="0|1234|"/>

重写后的 HTML 页

<HTML>
<HEAD>
RW_START
</HEAD>
<BODY>
<P>
<FORM name=form1  method=POST action="gateway-URL/http://abc.sesta.com/casestudy/html/form.html">

// 由于在 default_gateway_ruleset 中将 <Attribute name="action"/> 定义为 HTML 规则的一部分,所以会重写这个 URL。由于此 URL 已是绝对的,因此只需在其前面加上网关 URL。确保在网关服务的“域和子域的代理”列表中定义了 abc.sesta.com。否则,不会在其前面加网关 URL,因为此时将假定采用直接连接。

<input type=hidden name=name1 value=
"0|1234|gateway URL/portal-server-URL/test.html">

// 这里,表单名是 form1,字段名是 name1。这与规则中指定的表单名和字段名相匹配。规则将 valuePatterns 规定为 0|1234| ,该值与本语句中的 value 相匹配。因此,会重写 valuePattern 后出现的 URL。在其前面加上 Portal Server URL 和网关 URL。有关 valuePatterns 的详细信息,参见在规则中使用模式匹配

<input type=hidden name=name3 value="../../html/test.html">

// 由于 name 不匹配规则中指定的 field 名称,所以不会重写这个 URL。

</FORM>
<FORM name=form2 method=POST action=
"gateway-URL/http://abc.sesta.com/casestudy/html/form.html"><BR>

// 由于在默认规则集中将 <Attribute name="action"/> 定义为 HTML 规则的一部分,所以会重写这个 URL。由于此 URL 已是绝对的,因此只需在其前面加上网关 URL。

<input type=hidden name=name1 value="0|1234|../../html/test.html">

// 由于表单名不匹配规则中指定的名称,所以不会重写这个 URL。

</FORM>
</BODY>
RW_END
</HTML>

HTML Applet 示例

Procedure使用 Applet 示例

  1. 获得 applet 类文件。RewriteURLinApplet.class 文件位于以下位置:

    portal-server-URL/rewriter/HTML/applet/appletcode

    applet 代码所在页的基 URL 是:

    portal-server-URL/rewriter/HTML/applet/rule1.html

  2. 将本示例中指定的规则添加到“HTML 属性重写规则”一节的 default_gateway_ruleset 中。

  3. 在 Portal Server 管理控制台中,编辑 Portal Server 配置下的重写器服务中的 default_gateway_ruleset

  4. 重新启动网关:


    ./psadmin start-sra-instance –u amadmin – f  <password file> –N <profile name>– t  <gateway>
    

重写前的 HTML

<html>
Rewriting starts
<br>
<applet codebase=appletcode code=RewriteURLinApplet.class archive=/test>
<param name=Test1 value="/index.html">
<param name=Test2 value="../index.html">
<param name=Test3 value="../../index.html">
</applet>
Rewriting ends
</html>

规则

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

重写后的 HTML

<HTML>
Rewriting starts
<BR>
<APPLET codebase=gateway-URL/portal-server-URL
/rewriter/HTML/applet/appletcode=RewriteURLinApplet.class archive=/test>

// 由于规则 <Attribute name="codebase"/> 已呈现为 default_gateway_ruleset 文件的一部分,所以会重写这个 URL。网关和 Portal Server URL 会连同到 appletcode 目录的路径一起被加在其前面。

<param name=Test1 value=
"gateway-URL/portal-server-URL/index.html">

// 由于页的基 URL 是 rule1.html,并且参数名与规则中指定的参数 Test* 相匹配,所以会重写此 URL。由于 index.html 被指定位于根层级,因此会直接在其前面加上网关 URL 和 Portal Server URL。

<param name=Test2 value="gateway-URL
/portal-server-URL/rewriter/HTML/index.html">

// 由于页的基 URL 是 rule1.html,并且参数名与规则中指定的参数 Test* 相匹配,所以会重写此 URL。会根据需要在其前面加上相应的路径。

<param name=Test3 value="gateway-URL
/portal-server-URL/rewriter/index.html">

// 由于页的基 URL 是 rule1.html,并且参数名与规则中指定的参数 Test* 相匹配,所以会重写此 URL。会根据需要在其前面加上相应的路径。

</APPLET>
Rewriting ends
</HTML>