Sun Java System Portal Server Secure Remote Access 7.2 관리 설명서

JavaScript 컨텐트에 대한 규칙

JavaScript에는 다양한 위치에 URL이 있을 수 있습니다. Rewriter는 JavaScript를 직접 구문 분석하여 URL 부분을 확인할 수 없습니다. 특별한 규칙 집합을 작성하여 JavaScript 처리기가 URL을 확인하여 변환하도록 합니다.

URL 유형을 가진 JavaScript 요소는 다음으로 분류됩니다.

변수

변수의 일반 구문은 다음과 같습니다.

<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는 서버에서 이러한 표현식을 평가할 수 없기 때문에 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"/>
or
<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_expressionexpvar 표현식 변수의 오른쪽에 덧붙여집니다. 이 함수는 표현식을 처리하고 런타임에 컨텐트를 다시 작성합니다. 세 번째 라인에서 값이 단순 URL로 다시 작성됩니다.

DHTML(Dynamic 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"/>
or
<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(Dynamic 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을 다시 씁니다.

함수의 인수

그 값을 다시 작성해야 하는 함수 매개 변수는 4가지 범주로 분류됩니다.

일반 구문

<Function name="functionName " paramPatterns="y,y," [type="URL|EXPRESSION|DHTML|DJS" source=”*”]/>

여기서

name은 JavaScript 함수의 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 예를 들어 구문에서 첫 번째 매개 변수는 다시 써야 하지만 두 번째 매개 변수는 다시 쓰지 않아야 합니다.

type은 이 매개 변수에 필요한 값의 종류를 지정합니다(옵션, 기본값은 EXPRESSION 유형).

source는 페이지의 소스 URI입니다(옵션, 기본값은 *, 모든 페이지를 의미).

URL 매개 변수

함수는 이 매개 변수를 문자열로 취하며 이 문자열은 URL로 취급할 수 있습니다.

이 절은 다음으로 세분됩니다.

URL 매개 변수 구문

<Function name="functionName" paramPatterns="y,," type="URL" [source=”*”]/>

여기서

name은 URL 유형의 매개 변수를 갖는 함수 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 예를 들어 구문에서 첫 번째 매개 변수는 다시 써야 하지만 두 번째 매개 변수는 다시 쓰지 않아야 합니다.

type은 함수의 유형입니다(필수, 이 값은 URL이어야 함).

source는 이 함수 호출을 갖는 페이지의 URL입니다(옵션, 기본값은 *, 모든 URL을 의미).

URL 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html

페이지 컨텐트

<script language="JavaScript">
<!--
function test(one,two,three){
alert(one + "##" + two + "##" +three);
}
test("/test.html","../test.html","123");
window.open("/index.html","gen",width=500,height=500);
//-->
</SCRIPT>

규칙

<Function name="URL" name="test" paramPatterns="y,y,"/>
<Function name="URL" name="window.open" paramPatterns="y,,,"/>

결과

<SCRIPT language="JavaScript">
<!--
function test(one,two,three) {
alert(one + "##" + two + "##" +three);
}
test("gateway-URL/http://abc.sesta.com/test.html","
gateway-URL/http://abc.sesta.com/test/rewriter/
test1/jscript/test.html","123");window.open("gateway-URL/
http://abc.sesta.com/index.html","gen",width=500,height=500);
//-->
</SCRIPT>

설명

첫 번째 규칙은 test 이름의 함수에 있는 처음 두 매개 변수를 다시 작성해야 한다고 지정합니다. 따라서 test 함수의 처음 두 매개 변수는 다시 작성됩니다. 두 번째 규칙은window.open 함수의 처음 매개 변수를 다시 작성해야 한다고 지정합니다. window.open 함수 내의 URL에는 이 함수 매개 변수를 포함한 페이지의 기본 URL과 게이트웨이 URL이 앞에 덧붙여집니다.

EXPRESSION 매개 변수

이 매개 변수는 표현식 값을 취하며 평가 결과는 URL이 됩니다.

이 절은 다음으로 세분됩니다.

EXPRESSION 매개 변수 구문

<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source=”*”]/>

여기서

name은 함수의 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

type은 값 EXPRESSION을 지정합니다(옵션).

source는 이 함수가 호출되는 페이지의 URI입니다.

EXPRESSION 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

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

페이지 컨텐트

<script language="JavaScript">
<!--
function jstest2(){
return ".html";
}
function jstest1(one){
return one;
}
var dir="/images/test"
var test1=jstest1(dir+"/test"+jstest2());
document.write("<a HREF="+test1+">TEST</a>");
alert(test1);
//-->
</SCRIPT>

규칙

<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>
or
<Function name="jstest1" paramPatterns="y"/>

결과

<script language="JavaScript">
<!--
function jstest2(){
return ".html";
}
function jstest1(one){
return one;
}
var dir="/images/test"
var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2()));
document.write("<a HREF="+test1+">TEST</a>");
alert(test1);
//-->
</SCRIPT>

설명

이 규칙은 jstest1 함수의 첫 번째 매개 변수를 EXPRESSION 함수 매개 변수로 취급하여 다시 써야 한다는 것을 지정합니다. 예제 페이지 컨텐트에서 첫 번째 매개 변수는 런타임 때만 평가되는 표현식입니다. Rewriter는 이 표현식에 psSRAPRewriter_convert_expression 함수로 접두어를 붙입니다. 이 표현식이 평가되고 psSRAPRewriter_convert_expression 함수가 런타임 시 결과를 다시 씁니다.


주 –

위의 예제에서 JavaScript 변수 규칙의 일부로 test1 변수가 있을 필요는 없습니다. jstest1에 대한 함수 규칙이 다시 쓰기를 처리합니다.


DHTML 매개 변수

그 값이 HTML인 함수 매개 변수입니다.

HTML 페이지를 동적으로 생성하는 document.write() 같은 원시 JavaScript 메소드가 이 범주에 속합니다.

이 절은 다음으로 세분됩니다.

DHTML 매개 변수 구문

<Function name="functionName" paramPatterns="y" type="DHTML" [source=”*”]/>

여기서

name은 함수의 이름입니다.

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

DHTML 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html

페이지 컨텐트

<script>
<!--
document.write(\q<a href="/index.html">write</a><BR>\q)
document.writeln(\q<a href="index.html">writeln</a><BR>\q)
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
//-->
</SCRIPT>

규칙

<Function name="DHTML" name="document.write" paramPatterns="y"/>
<Function name="DHTML" name="document.writeln" paramPatterns="y"/>
<Attribute name="href"/>

결과

<SCRIPT>
<!--
document.write(\q<a href="gateway-URL/
http://xyz.siroe.com/index.html">write</a><BR>\q)
document.writeln(\q<a href="gateway-URL/
http://xyz.siroe.com/test/rewriter/test1/
jscript/JSFUNC/index.html">writeln</a><BR>\q)
document.write("http://abc.sesta.com/index.html<BR>")
document.writeln("http://abc.sesta.com/index.html<BR>")
//-->
</SCRIPT>

설명

첫 번째 규칙은 document.write 함수의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. 두 번째 규칙은 document.writeln 함수의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. 세 번째 규칙은 href 이름의 모든 속성을 다시 작성해야 한다고 지정하는 단순 HTML 규칙입니다. 이 예에서, DHTML 매개 변수 규칙이 함수에서 다시 작성해야 하는 매개 변수를 확인합니다. 그런 다음 HTML 속성 규칙이 적용되어 실제로 확인된 매개 변수가 다시 작성됩니다.

DJS 매개 변수

그 값이 JavaScript인 함수 매개 변수입니다.

이 절은 다음으로 세분됩니다.

DJS 매개 변수 구문

<Function name="functionName" paramPatterns="y" type="DJS" [source=”*”]/>

여기서

name은 하나의 매개 변수가 DJS인 함수의 이름입니다(필수).

paramPatterns는 위 함수에서 어떤 매개 변수가 DJS인지를 지정합니다(필수).

y. y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

type은 DJS입니다(필수).

source는 페이지의 URI입니다(옵션, 기본값은 *, 모든 URI를 의미).

DJS 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

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

페이지 컨텐트

<script>
menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.com\q"));
</script>

규칙

<Function name="DJS" name="NavBarMenuItem" paramPatterns=",y"/>
<Variable name="URL">top.location</Variable>

결과

<script>
menu.addItem(new NavBarMenuItem("All Available Information",
"JavaScript:top.location=\qgateway-URL/
http://abc.sesta.com\q"));
</script>

설명

첫 번째 규칙은 JavaScript를 포함한 NavBarMenuItem 함수의 두 번째 매개 변수를 다시 작성해야 한다고 지정합니다. JavaScript 내에서 top.location 변수도 다시 작성해야 합니다. 이 변수는 두 번째 규칙을 사용하여 다시 작성됩니다.