declarativeNetRequest.RuleCondition

確定規則是否匹配請求的條件詳情,作為 declarativeNetRequest.Rulecondition 屬性。

型別

此型別的值是物件。它們包含以下屬性:

domainType 可選

一個 string。指定網路請求是第一方還是第三方。如果請求與發起請求的文件或子文件屬於同一域,則該請求被視為第一方。否則,它被視為第三方。如果省略,則接受所有請求。可能的值為 "firstParty""thirdParty"

domains 已棄用 可選

一個 string 陣列。請使用 initiatorDomains 代替。該規則僅匹配源自此域名列表的網路請求。

excludedDomains 已棄用 可選

一個 string 陣列。請使用 excludedInitiatorDomains 代替。該規則不匹配源自此域名列表的網路請求。

initiatorDomains 可選

一個 string 陣列。該規則僅匹配源自此域名列表的網路請求。如果省略列表,則該規則應用於來自所有域的請求。不允許空列表。應使用 規範域名。此匹配基於請求發起者,而非請求 URL。

excludedInitiatorDomains 可選

一個 string 陣列。該規則不匹配源自此域名列表的網路請求。如果列表為空或被省略,則不排除任何域名。此選項優先於 initiatorDomains。應使用 規範域名。此匹配基於請求發起者,而非請求 URL。

isUrlFilterCaseSensitive 可選

一個 boolean。指定 urlFilterregexFilter(任一指定)是否區分大小寫。雖然在 WECG issue 269 中,跨瀏覽器預設值 false 已經達成共識,但 Chrome 和 Safari(較舊)版本曾使用 true。詳情請參見 瀏覽器相容性

regexFilter 可選

一個 string。用於匹配網路請求 URL 的正則表示式。請注意:

requestDomains 可選

一個 string 陣列。當域名匹配此列表中的某個域名時,規則才匹配網路請求。如果省略列表,則該規則應用於來自所有域的請求。不允許空列表。應使用 規範域名

excludedRequestDomains 可選

一個 string 陣列。當域名匹配此列表中的某個域名時,規則不匹配網路請求。如果列表為空或被省略,則不排除任何域名。此選項優先於 requestDomains。應使用 規範域名

requestMethods 可選

一個 string 陣列。規則匹配的 HTTP 請求方法列表。不允許空列表。指定 requestMethods 規則條件也會排除非 HTTP(s) 請求,而指定 excludedRequestMethods 則不會。

excludedRequestMethods 可選

一個 string 陣列。規則不匹配的請求方法列表。只能指定 requestMethodsexcludedRequestMethods 中的一個。如果兩者均未指定,則匹配所有請求方法。

resourceTypes 可選

一個 declarativeNetRequest.ResourceType 陣列。規則匹配的資源型別列表。不允許空列表。"allowAllRequests" 規則必須指定此項,並且只能包含 "sub_frame""main_frame" 資源型別。

excludedResourceTypes 可選

一個 declarativeNetRequest.ResourceType 陣列。規則不匹配的資源型別列表。只能指定 resourceTypesexcludedResourceTypes 中的一個。如果兩者均未指定,則阻止所有資源型別(除了 "main_frame")。

responseHeaders 可選

一個 declarativeNetRequest.HeaderInfo 陣列。如果請求與此列表中的任何響應頭條件匹配(如果指定),則規則匹配。

excludedResponseHeaders 可選

一個 declarativeNetRequest.HeaderInfo 陣列。如果請求與此列表中的任何響應頭條件匹配(如果指定),則規則不匹配。如果同時指定了 excludedResponseHeadersresponseHeaders,則 excludedResponseHeaders 屬性具有優先權。

tabIds 可選

一個 number 陣列。規則應匹配的 tabs.Tab id 列表。ID 為 tabs.TAB_ID_NONE 的請求不源自標籤頁。不允許空列表。僅支援會話範圍的規則。

excludedTabIds 可選

一個 number 陣列。規則不應匹配的 tabs.Tab id 列表。ID 為 tabs.TAB_ID_NONE 的請求不源自標籤頁。僅支援會話範圍的規則。

urlFilter 可選

一個 string。與網路請求 URL 匹配的模式。支援的構造:

  • *:萬用字元:匹配任意數量的字元。
  • |:左或右錨點:如果用於模式的任一端,則分別指定 URL 的開頭或結尾。
  • ||:域名錨點:如果用於模式的開頭,則指定 URL 的(子)域名的開頭。
  • ^:分隔符:匹配除字母、數字或 _-.% 之外的任何字元。最後一個 ^ 也可能匹配 URL 的末尾而不是分隔符。

urlFilter 由以下部分組成:(可選的左/域名錨點)+ 模式 +(可選的右錨點)。如果省略,則匹配所有 URL。不允許空字串。不允許以 ||* 開頭的模式。請改用 *。請注意:

  • 只能指定 urlFilterregexFilter 中的一個。
  • urlFilter 必須僅由 ASCII 字元組成。此內容將與 URL 進行匹配,其中主機名以 punycode 格式編碼(對於國際化域名),其他非 ASCII 字元則以 UTF-8 進行百分比編碼。例如,當請求 URL 為 http://abc.рф?q=ф 時,urlFilter 將與 URL http://abc.xn--p1ai/?q=%D1%84 匹配。

規範域名

initiatorDomainsexcludedInitiatorDomainsrequestDomainsexcludedRequestDomains 中指定的域名應符合以下要求:

  • 允許子域名,例如“a.example.com”。
  • 條目必須僅包含*小寫* ASCII 字元。
  • 對於國際化域名,請使用 Punycode 編碼。
  • IPv4 地址必須表示為由點分隔的 4 個數字。
  • IPv6 地址應表示為其規範形式,並用方括號括起來。

要以程式設計方式生成 URL 的規範域名,請使用 URL API 並讀取其 hostname 屬性,即 new URL(url).hostname

擴充套件程式示例

瀏覽器相容性