<Variable name="variableName" [type="URL|EXPRESSION|DHTML|DJS|SYSTEM" source="*"]>
JavaScript 변수는 가지고 있는 값의 유형에 따라 5가지 범주로 더욱 세분할 수 있습니다.
변수 값은 URL로 취급할 수 있는 단순한 문자열입니다.
이 절은 다음으로 세분됩니다.
<Variable name="variableName" type="URL" [source="*"]>
여기서
variableName은 변수의 이름입니다. variableName의 값은 다시 작성됩니다(필수).
type은 URL 변수입니다(필수, 이 값은 URL이어야 함).
source는 이 JavaScript 변수가 발견되는 페이지의 URI입니다(옵션, 기본값 *는 모든 페이지를 의미).
기본 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입니다. Rewriter는 서버에서 이러한 표현식을 평가할 수 없기 때문에 HTML 페이지에 JavaScript 함수(psSRAPRewriter_convert_expression)를 추가합니다. 이 함수는 표현식을 하나의 매개 변수로 받아들여 클라이언트 브라우저에서 필요한 URL로 평가합니다.
명령문에 단순 URL이 있는지 EXPRESSION URL이 있는지 잘 모르는 경우에는 두 시나리오를 모두 처리할 수 있는 EXPRESSION 규칙을 사용하십시오.
이 절은 다음으로 세분됩니다.
<Variable name="variableName" [type="EXPRESSION" source="*"]/>
여기서
variableName은 그 값이 표현식인 JavaScript 변수의 이름입니다(필수).
type은 JavaScript 변수의 유형입니다(옵션, 기본값은 EXPRESSION).
source는 페이지의 URI입니다(옵션, 기본값 *, 모든 소스를 의미)
페이지의 기본 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_expression이 expvar 표현식 변수의 오른쪽에 덧붙여집니다. 이 함수는 표현식을 처리하고 런타임에 컨텐트를 다시 작성합니다. 세 번째 라인에서 값이 단순 URL로 다시 작성됩니다.
이것은 HTML 컨텐트를 포함한 JavaScript 변수입니다.
이 절은 다음으로 세분됩니다.
<Variable name="variableName" type="DHTML" [source="*"]/>
여기서
variableName은 DHTML 컨텐트가 있는 JavaScript 변수의 이름입니다(필수).
type은 변수의 유형입니다(필수, 이 값은 DHTML이어야 함).
source는 페이지의 URL입니다(옵션, 기본값은 *, 모든 페이지를 의미).
페이지의 기본 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이 다시 작성됩니다.
이것은 JavaScript 컨텐트를 포함한 JavaScript 변수입니다.
이 절은 다음으로 세분됩니다.
<Variable name="variableName" type="DJS" [source="*"]/>
여기서
variable은 그 값이 javascript인 JavaScript 변수입니다.
페이지의 기본 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 변수의 값을 다시 쓰기 위해 두 번째 규칙이 적용됩니다.
사용자가 사용하지 못하도록 선언되어 있어 지원이 제한되는 변수입니다. 이 변수들은 JavaScript 표준의 일부로 사용할 수 있습니다. 예: window.location.pathname
이 절은 다음으로 세분됩니다.
<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입니다(옵션, 기본값 *는 모든 페이지를 의미).
페이지의 기본 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을 다시 씁니다.