「影像演算」支援簡單的請求預處理機制,此機制以規則運算式比對和替代規則為基礎。
預先處理規則(規則集)的集合可附加至材質目錄或預設目錄。 僅當請求未附加特定物料目錄時,預設目錄中的規則才適用。
請求預處理規則可在請求由伺服器的請求解析器處理之前修改路徑和查詢部分請求,包括操作路徑、添加命令、更改命令值以及應用模板或宏。 規則也可用來設定和覆寫某些目錄屬性,以及用來限制特定用戶端IP位址的服務。
規則集會儲存為XML檔案檔。 必須在attribute::RuleSetFile
中指定規則集檔案的相對或絕對路徑。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ruleset SYSTEM" RuleSet.dtd">
<ruleset>
<rule>
<expression>
<varname>
expression
</varname></expression>
<substitution>
<varname>
substitution
</varname></substitution>
<addressfilter>
<varname>
addressFilter
</varname></addressfilter>
</rule>
</ruleset>
在有效的規則集XML檔案中,即使未定義實際規則,<?xml>
、<!DOCTYPE>
和<ruleset>
元素也始終是必需的。
允許一個包含任意數目的<rule>
元素的<ruleset>
元素。
預處理規則檔案的內容會區分大小寫。
在進行任何其他處理之前,會部分解析傳入的HTTP請求,以決定應套用哪些材料目錄。 在識別目錄後,會套用所選目錄的規則集(若未識別特定目錄,則會套用預設目錄)。
搜索<rule>
元素時,按與<expression>
元素(expression
)的內容匹配的指定順序。
如果<rule>
符合,則會套用選用的substitution
,並將修改的請求字串傳遞至伺服器的請求剖析器,以進行正常處理。
如果到達<ruleset>
結尾時未成功匹配,則請求將傳遞給解析器,而不進行修改。
可以使用<rule>
元素的OnMatch
屬性來修改預設行為。 OnMatch
可設為 break
(預設值)、 continue
或 error.
元素和屬性 |
相符時的行為 |
---|---|
<rule OnMatch="break"> |
在套用此規則的替代後,規則處理會立即終止。 預設. |
<rule OnMatch="continue"> |
系統會套用替代項目,處理作業會繼續下一個規則。 |
<rule OnMatch="error"> |
規則處理會立即終止,而「請求拒絕」回應狀態會傳回給用戶端。 |
<rule>
元素可以選擇定義在規則成功匹配並被設定時覆蓋相應目錄屬性 OnMatch="break"
的屬性。如果設定OnMatch="continue"
,則不應用任何屬性。 請參閱<rule>
的說明,以取得可使用規則控制的屬性清單。
簡單的字串比對適用於非常基本的應用程式,但大部分的例項都需要規則運算式。 雖然規則運算式是業界標準,但特定實作會因例項而異。
軟體包java.util. regex描述映像服務使用的特定規則運算式實現。
為方便複雜的URL修改,可在運算式中擷取子字串,方法是將子字串加上括弧(…)。 擷取的子字串會根據前括弧的位置,以1開始依序編號。 捕獲的子字串可以使用$n
插入替代中,其中n
是捕獲的子字串的序列號。
一個規則集檔案可以附加到每個具有目錄屬性attribute::RuleSetFile
的物料目錄。 雖然您可以隨時編輯規則集檔案,但影像伺服器僅在重新載入相關材料目錄時識別更改。 當平台伺服器啟動或重新啟動時,以及當主目錄檔案(具有.ini檔案尾碼)被修改或「觸摸」(更改檔案日期)時,就會發生這種情況。
規則集示例在映像服務文檔的映像目錄參考的相應部分中提供。