Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese API ermöglicht es Erweiterungen, Bedingungen und Aktionen festzulegen, die beschreiben, wie Netzwerkanforderungen behandelt werden sollen. Diese deklarativen Regeln ermöglichen es dem Browser, Netzwerkanforderungen zu evaluieren und zu modifizieren, ohne die Erweiterungen über einzelne Netzwerkanforderungen zu benachrichtigen.
Um diese API zu verwenden, muss eine Erweiterung die Berechtigung "declarativeNetRequest" oder "declarativeNetRequestWithHostAccess" in ihrer manifest.json Datei anfordern. Die Berechtigung "declarativeNetRequest" wird den Benutzern in den Berechtigungsaufforderungen angezeigt, die Berechtigung "declarativeNetRequestWithHostAccess" jedoch nicht.
Die Berechtigung "declarativeNetRequest" erlaubt es Erweiterungen, Anfragen zu blockieren und zu aktualisieren, ohne dass Host-Berechtigungen erforderlich sind. Host-Berechtigungen werden benötigt, wenn die Erweiterung Anfragen umleiten oder Header von Anfragen ändern möchte oder wenn die Berechtigung "declarativeNetRequestWithHostAccess" anstelle der Berechtigung "declarativeNetRequest" verwendet wird. Um Anfragen in diesen Fällen zu bearbeiten, sind Host-Berechtigungen für die Anfrage-URL erforderlich. Für alle Anfragen, außer für Navigationsanfragen (d.h. Ressourcentyp main_frame und sub_frame), sind auch Host-Berechtigungen für den Initiator der Anfrage erforderlich. Der Initiator einer Anfrage ist normalerweise das Dokument oder der Worker, der die Anfrage ausgelöst hat.
Einige Anfragen sind eingeschränkt und können nicht von Erweiterungen abgeglichen werden. Dazu gehören privilegierte Browseranfragen, Anfragen zu oder von eingeschränkten Domänen und Anfragen von anderen Erweiterungen.
Die Berechtigung "declarativeNetRequestFeedback" ist erforderlich, um getMatchedRules und onRuleMatchedDebug zu verwenden, da sie Informationen über übereinstimmende deklarative Regeln zurückgeben. Weitere Informationen finden Sie unter Testing.
Die deklarativen Regeln werden durch vier Felder definiert:
Hinweis: Eine Umleitungsaktion leitet die Anfrage nicht um und die Anfrage wird normal fortgesetzt, wenn:
Dies ist eine Beispielregel, die alle Skript-Anfragen blockiert, die von "example.com" zu jeder URL mit "abc" als Teilzeichenfolge ausgehen:
Das urlFilter-Feld einer Regelbedingung wird verwendet, um das Muster anzugeben, das mit der Anfrage-URL abgeglichen wird. Weitere Details finden Sie unter RuleCondition. Einige Beispiele für URL-Filter sind:
| "abc" | https://abcd.com https://example.com/abcd |
https://ab.com |
| "abc*d" | https://abcd.com https://example.com/abcxyzd |
https://abc.com |
| "||a.example.com" | https://a.example.com/ https://b.a.example.com/xyz |
https://example.com/ |
| "|https*" | https://example.com | http://example.com/ http://https.com |
Regeln werden in Regelsets organisiert:
Hinweis: Fehler und Warnungen zu ungültigen statischen Regeln werden nur während der Testing angezeigt. Ungültige statische Regeln in dauerhaft installierten Erweiterungen werden ignoriert. Daher ist es wichtig, zu überprüfen, ob Ihre statischen Regelsets gültig sind, indem Sie sie testen.
Eine Erweiterung kann:
Hinweis: Die Anzahl der Regeln in aktivierten statischen Regelsets für alle Erweiterungen darf das globale Limit nicht überschreiten. Erweiterungen sollten sich nicht darauf verlassen, dass das globale Limit einen bestimmten Wert hat; stattdessen sollten sie getAvailableStaticRuleCount verwenden, um die Anzahl der zusätzlichen Regeln zu ermitteln, die sie aktivieren können.
Die Anzahl der dynamischen und auf Sitzungen beschränkten Regeln, die eine Erweiterung hinzufügen kann, ist begrenzt auf:
Wenn der Browser evaluiert, wie Anfragen behandelt werden sollen, überprüft er die Regeln jeder Erweiterung, die eine Bedingung aufweisen, die der Anfrage entspricht, und wählt die Regel, die in Betracht gezogen werden soll, wie folgt:
Hinweis: Wenn mehrere übereinstimmende Regeln die gleiche Regelpriorität und den gleichen Regelaktionstyp haben, kann das Ergebnis nicht eindeutig sein, wenn die übereinstimmte Aktion zusätzliche Eigenschaften unterstützt. Diese Eigenschaften können zu Ergebnissen führen, die nicht kombiniert werden können. Zum Beispiel:
Um die Reihenfolge zu kontrollieren, in der Aktionen angewendet werden, weisen Sie Regeln unterschiedliche priority-Werte zu, deren Reihenfolge wichtig ist.
Hinweis: Nach Regelpriorität und Regelaktion berücksichtigt Firefox das Regelset, zu dem die Regel gehört, in dieser Vorrangreihenfolge: Sitzung > dynamisch > statische Regelsets. Dies kann nicht browserübergreifend als zuverlässig angesehen werden, siehe WECG issue 280.
Wenn nur eine Erweiterung eine Regel für die Anfrage bereitstellt, wird diese Regel angewendet. Wenn jedoch mehr als eine Erweiterung eine übereinstimmende Regel hat, wählt der Browser die anzuwendende Regel in folgender Vorrangreihenfolge:
Wenn die Anfrage nicht blockiert oder umgeleitet wurde, werden die übereinstimmenden modifyHeaders-Aktionen angewendet, wie in declarativeNetRequest.ModifyHeaderInfo dokumentiert.
testMatchOutcome, getMatchedRules, und onRuleMatchedDebug stehen zur Verfügung, um beim Testen von Regeln und Regelsets zu helfen. Diese APIs erfordern die Berechtigung "declarativeNetRequestFeedback". Darüber hinaus:
Der Antwort-Header, der für die Anfrage abgeglichen wird, deklariert im rule.condition.excludedResponseHeaders-Array oder im rule.condition.responseHeaders-Array.
declarativeNetRequest.MatchedRuleDetails einer übereinstimmenden Regel.
declarativeNetRequest.ModifyHeaderInfoDie Anfrage- oder Antwort-Header, die für die Anfrage geändert werden sollen.
declarativeNetRequest.RedirectDetails, wie die Umleitung durchgeführt werden sollte. Nur gültig für Umleitungsregeln.
declarativeNetRequest.ResourceTypeDer Ressourcentyp einer Anfrage.
declarativeNetRequest.RuleEin Objekt, das die Details einer Regel enthält.
declarativeNetRequest.RuleActionEin Objekt, das die Aktion definiert, die durchgeführt werden soll, wenn eine Regel übereinstimmt.
declarativeNetRequest.RuleConditionEin Objekt, das die Bedingung definiert, unter der eine Regel ausgelöst wird.
declarativeNetRequest.URLTransformEin Objekt, das die Details einer URL-Transformation für eine Umleitungsaktion enthält.
Die Regelset-ID für die von der Erweiterung hinzugefügten dynamischen Regeln.
declarativeNetRequest.GETMATCHEDRULES_QUOTA_INTERVALDas Zeitintervall, innerhalb dessen declarativeNetRequest.MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL declarativeNetRequest.getMatchedRules Aufrufe gemacht werden können.
declarativeNetRequest.GUARANTEED_MINIMUM_STATIC_RULESDie Mindestanzahl statischer Regeln, die einer Erweiterung über ihre aktivierten statischen Regelsets garantiert sind.
declarativeNetRequest.MAX_GETMATCHEDRULES_CALLS_PER_INTERVALDie Anzahl der Male, die declarativeNetRequest.getMatchedRules innerhalb eines Zeitraums von declarativeNetRequest.GETMATCHEDRULES_QUOTA_INTERVAL aufgerufen werden kann.
declarativeNetRequest.MAX_NUMBER_OF_DISABLED_STATIC_RULESDie maximale Anzahl statischer Regeln, die in jedem statischen Regelset deaktiviert werden können.
declarativeNetRequest.MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULESDie maximale Anzahl dynamischer und auf Sitzungen beschränkter Regeln, die eine Erweiterung hinzufügen kann.
declarativeNetRequest.MAX_NUMBER_OF_DYNAMIC_RULESDie maximale Anzahl dynamischer Regeln, die eine Erweiterung hinzufügen kann.
declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETSDie maximale Anzahl statischer Regelsets, die eine Erweiterung aktivieren kann.
declarativeNetRequest.MAX_NUMBER_OF_REGEX_RULESDie maximale Anzahl an regulären Ausdrucksregeln, die eine Erweiterung hinzufügen kann.
declarativeNetRequest.MAX_NUMBER_OF_SESSION_RULESDie maximale Anzahl an auf Sitzungen beschränkten Regeln, die eine Erweiterung hinzufügen kann.
declarativeNetRequest.MAX_NUMBER_OF_STATIC_RULESETSDie maximale Anzahl an statischen Regelsets, die eine Erweiterung als Teil des declarative_net_request.rule_resources Manifest-Schlüssels angeben kann.
declarativeNetRequest.SESSION_RULESET_IDDie Regelset-ID für die von der Erweiterung hinzugefügten auf Sitzungen beschränkten Regeln.
Gibt die Anzahl der statischen Regeln zurück, die eine Erweiterung aktivieren kann, bevor das globale statische Regel-Limit erreicht ist.
declarativeNetRequest.getDisabledRuleIds()Gibt die IDs der deaktivierten Regeln in einem statischen Regelset zurück.
declarativeNetRequest.getDynamicRules()Gibt die Menge an dynamischen Regeln für die Erweiterung zurück.
declarativeNetRequest.getEnabledRulesets()Gibt die IDs für die aktiven statischen Regelsets zurück.
declarativeNetRequest.getMatchedRules()Gibt alle übereinstimmenden Regeln für die Erweiterung zurück.
declarativeNetRequest.getSessionRules()Gibt die Menge der auf Sitzungen beschränkten Regeln für die Erweiterung zurück.
declarativeNetRequest.isRegexSupported()Überprüft, ob ein regulärer Ausdruck als declarativeNetRequest.RuleCondition.regexFilter Regelbedingung unterstützt wird.
declarativeNetRequest.setExtensionActionOptions()Konfiguriert, wie die Aktionsanzahl für Tabs gehandhabt wird.
declarativeNetRequest.testMatchOutcome()Überprüft, ob eine der declarativeNetRequest-Regeln der Erweiterung eine hypothetische Anfrage übereinstimmen würde.
declarativeNetRequest.updateDynamicRules()Ändert die aktive Menge an dynamischen Regeln für die Erweiterung.
declarativeNetRequest.updateEnabledRulesets()Aktualisiert die Menge an aktiven statischen Regelsets für die Erweiterung.
declarativeNetRequest.updateSessionRules()Ändert die Menge an auf Sitzungen beschränkten Regeln für die Erweiterung.
declarativeNetRequest.updateStaticRules()Ändert den aktivierten Zustand von Regeln in einem statischen Regelset.
Wird ausgelöst, wenn eine Regel einer Anfrage zugeordnet wird, während das Debugging einer Erweiterung mit der Berechtigung "declarativeNetRequestFeedback" durchgeführt wird.
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.