主要 Web 瀏覽器(包括網路引擎)使用的 PAC 慣例是使用修改的標準運算式語法。到目前為止,pacmanager 一直使用普通的正則表達式進行匹配。我們正在變更shExpMatch 功能以使用與瀏覽器相似的相符。
此變更意味著,RoomOS 將與網路中的其他 Web 用戶端使用相同的 PAC 檔案相符。專為 RoomOS 編寫的 PAC 檔案可能需要更新才能保持按預期工作。
PAC 檔案評估在 RoomOS 軟體中的兩個不同位置完成:
-
自身流量的網路引擎。
-
所有其他 HTTP 流量的 Pacmanager:HttpFeedback、 Webex佈建、呼叫訊號傳遞等。
PAC 檔案可以使用此功能:shExpMatch(字串, 型式)
如果字串符合型式,則返回 true,否則返回 false。
下面列出了兩種慣例之間的主要區別,其中「regex」代表傳統正則表達式,而「BROWSER」代表 Web 瀏覽器慣例。
點符號「.」
-
正則表達式:。符合可以使用量詞重複的單個字元
-
瀏覽器: 。僅相符點字元
星號 "*":
-
正則表達式:* 是項目後的 0 或多個量詞,但本身不相符任何內容
-
瀏覽器:* 符合 0 或多個字元
問號「?」:
-
正則表達式: ?是項目後的零或一量詞,或者可以將 * 量詞修改為非貪心,但本身不相符任何內容
-
瀏覽器: ?符合單個字元
整個表達式是否必須符合:
-
正則表達式:如果不使用前導 ^ 和結尾 $,則 PATTERN 不需要匹配整個 STRING:STRING 包含一個相符的子字串就足夠了。
-
瀏覽器:始終要求 STRING 完全符合 PATTERN
範例
我們要相符「provider.domain」下的所有主機名稱,但不符合「otherprovider.domain」、「provider.domain.tld」或「providersdomain」下的所有主機名稱:
正則表達式:
shExpMatch(url, "^.*\.provider\.domain$")
瀏覽器:
shExpMatch(url, "*.provider.domain")
我們要相符「Proxy1.domain」、「Proxy2.domain」等,但不相符「Proxytest.domain」:
正則表達式:
shExpMatch(url, "^Proxy.\.domain$")
瀏覽器:
shExpMatch(url, "Proxy?.domain")
其他資源
如需有關 PAC檔案格式的更多詳細資訊,請參閱: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file 。