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 變數

EXPRESSION 變數的右側會有一個表示式。此表示式會產生一個 URL。Rewriter 會將 JavaScript 函數 (psSRAPRewriter_convert_expression) 附加至 HTML 網頁,因為其無法在伺服器上計算這類表示式的值。此函數會將表示式視為參數,並在用戶端瀏覽器中計算所需 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";

描述

psSRAPRewriter_convert_expression 函數會前置於第一行表示式變數 expvar 的右側之前。此函數可處理表示式,並於執行時間重新寫入內容。在第三行中,此值將被重新寫入為簡單 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>

描述

Rewriter 會找出與規則相符的系統變數,然後前置 psSRAPRewriter_convert_system 函數。此函數可在執行時間中處理系統變數,然後相應重新寫入結果 URL。