Beschrijving
Let op: deze API is verouderd. Bekijk in plaats daarvan de declarativeNetRequest API. Gebruik de chrome.declarativeWebRequest API om lopende verzoeken te onderscheppen, blokkeren of wijzigen. Deze is aanzienlijk sneller dan de chrome.webRequest API omdat u regels kunt registreren die in de browser worden geëvalueerd in plaats van door de JavaScript-engine. Dit vermindert de latentie en zorgt voor een hogere efficiëntie.
Toestemmingen
declarativeWebRequestOm deze API te kunnen gebruiken, moet u de machtiging "declarativeWebRequest" in het extensiemanifest declareren, samen met de hostmachtigingen .
{
"name": "My extension",
...
"permissions": [
"declarativeWebRequest",
"*://*/*"
],
...
}
Beschikbaarheid
Manifest
Houd er rekening mee dat voor bepaalde soorten niet-gevoelige acties geen hostrechten vereist zijn:
-
CancelRequest -
IgnoreRules -
RedirectToEmptyDocument -
RedirectToTransparentImage
De actie SendMessageToExtension() vereist hostmachtigingen voor alle hosts waarvan u de netwerkverzoeken wilt activeren voor een bericht.
Voor alle overige acties zijn hostrechten voor alle URL's vereist.
Als voorbeeld: als "https://*.google.com/*" de enige hosttoegangsmachtiging is die een extensie heeft, dan kan een dergelijke extensie een regel instellen om:
- Een verzoek aan
https://www.google.comofhttps://anything.else.comannuleren. - Verzend een bericht wanneer u naar
https://www.google.comnavigeert, maar niet naarhttps://something.else.com.
De extensie kan geen regel instellen om https://www.google.com door te verwijzen naar https://mail.google.com .
Regels
De Declarative Web Request API volgt de concepten van de Declarative API . Je kunt regels registreren voor het gebeurtenisobject chrome.declarativeWebRequest.onRequest .
De Declarative Web Request API ondersteunt één type overeenkomstcriterium, de RequestMatcher . De RequestMatcher komt alleen overeen met netwerkverzoeken als aan alle vermelde criteria is voldaan. De volgende RequestMatcher komt overeen met een netwerkverzoek wanneer de gebruiker https://www.example.com in de adresbalk invoert:
var matcher = new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'example.com', schemes: ['http'] },
resourceType: ['main_frame']
});
Verzoeken aan https://www.example.com zouden door de RequestMatcher worden afgewezen vanwege het schema. Ook alle verzoeken voor een ingesloten iframe zouden worden afgewezen vanwege het resourceType .
Om alle verzoeken aan "example.com" te annuleren, kunt u een regel definiëren zoals hieronder beschreven:
var rule = {
conditions: [
new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'example.com' } })
],
actions: [
new chrome.declarativeWebRequest.CancelRequest()
]
};
Om alle verzoeken aan example.com en foobar.com te annuleren, kunt u een tweede voorwaarde toevoegen, aangezien elke voorwaarde op zich voldoende is om alle opgegeven acties te activeren:
var rule2 = {
conditions: [
new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'example.com' } }),
new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'foobar.com' } })
],
actions: [
new chrome.declarativeWebRequest.CancelRequest()
]
};
De registratieregels zijn als volgt:
chrome.declarativeWebRequest.onRequest.addRules([rule2]);
Evaluatie van omstandigheden en acties
De Declarative Web Request API volgt het levenscyclusmodel voor webverzoeken van de Web Request API . Dit betekent dat voorwaarden alleen in specifieke fasen van een webverzoek kunnen worden getest en dat acties eveneens alleen in specifieke fasen kunnen worden uitgevoerd. De volgende tabellen geven een overzicht van de verzoekfasen die compatibel zijn met voorwaarden en acties.
| Aanvraagfasen waarin conditiekenmerken kunnen worden verwerkt. | ||||
|---|---|---|---|---|
| Voorwaarde-attribuut | onBeforeRequest | onBeforeSendHeaders | onHeadersReceived | onAuthRequired |
url | ✓ | ✓ | ✓ | ✓ |
resourceType | ✓ | ✓ | ✓ | ✓ |
contentType | ✓ | |||
excludeContentType | ✓ | |||
responseHeaders | ✓ | |||
excludeResponseHeaders | ✓ | |||
requestHeaders | ✓ | |||
excludeRequestHeaders | ✓ | |||
thirdPartyForCookies | ✓ | ✓ | ✓ | ✓ |
| Verzoekfasen waarin acties kunnen worden uitgevoerd. | ||||
| Evenement | onBeforeRequest | onBeforeSendHeaders | onHeadersReceived | onAuthRequired |
AddRequestCookie | ✓ | |||
AddResponseCookie | ✓ | |||
AddResponseHeader | ✓ | |||
CancelRequest | ✓ | ✓ | ✓ | ✓ |
EditRequestCookie | ✓ | |||
EditResponseCookie | ✓ | |||
IgnoreRules | ✓ | ✓ | ✓ | ✓ |
RedirectByRegEx | ✓ | ✓ | ||
RedirectRequest | ✓ | ✓ | ||
RedirectToEmptyDocument | ✓ | ✓ | ||
RedirectToTransparentImage | ✓ | ✓ | ||
RemoveRequestCookie | ✓ | |||
RemoveRequestHeader | ✓ | |||
RemoveResponseCookie | ✓ | |||
RemoveResponseHeader | ✓ | |||
SendMessageToExtension | ✓ | ✓ | ✓ | ✓ |
SetRequestHeader | ✓ | |||
Gebruik prioriteiten om regels te overschrijven.
Regels kunnen aan prioriteiten worden gekoppeld zoals beschreven in de Events API . Dit mechanisme kan worden gebruikt om uitzonderingen uit te drukken. Het volgende voorbeeld blokkeert alle verzoeken voor afbeeldingen met de naam evil.jpg , behalve op de server "myserver.com".
var rule1 = {
priority: 100,
conditions: [
new chrome.declarativeWebRequest.RequestMatcher({
url: { pathEquals: 'evil.jpg' } })
],
actions: [
new chrome.declarativeWebRequest.CancelRequest()
]
};
var rule2 = {
priority: 1000,
conditions: [
new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: '.myserver.com' } })
],
actions: [
new chrome.declarativeWebRequest.IgnoreRules({
lowerPriorityThan: 1000 })
]
};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
Het is belangrijk te beseffen dat de actie IgnoreRules niet behouden blijft tussen de verschillende fasen van een verzoek . Alle voorwaarden van alle regels worden in elke fase van een webverzoek geëvalueerd. Als een IgnoreRules actie wordt uitgevoerd, is deze alleen van toepassing op andere acties die voor hetzelfde webverzoek in dezelfde fase worden uitgevoerd.
Soorten
AddRequestCookie
Voegt een cookie toe aan het verzoek of overschrijft een cookie, indien er al een cookie met dezelfde naam bestaat. Merk op dat het de voorkeur verdient om de Cookies API te gebruiken, omdat dit rekenkundig minder kostbaar is.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: AddRequestCookie) => {...}
- argument
- retourneert
- koekje
Een cookie die aan het verzoek moet worden toegevoegd. Geen enkel veld mag niet gedefinieerd zijn.
AddResponseCookie
Voegt een cookie toe aan het antwoord of overschrijft een cookie, indien er al een cookie met dezelfde naam bestaat. Merk op dat het de voorkeur verdient om de Cookies API te gebruiken, omdat dit rekenkundig minder belastend is.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: AddResponseCookie) => {...}
- argument
- retourneert
- koekje
Een cookie die aan het antwoord moet worden toegevoegd. De naam en waarde moeten worden opgegeven.
AddResponseHeader
Voegt de responseheader toe aan het antwoord van dit webverzoek. Omdat meerdere responseheaders dezelfde naam kunnen hebben, moet u eerst een bestaande responseheader verwijderen en vervolgens een nieuwe toevoegen om deze te vervangen.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: AddResponseHeader) => {...}
- argument
- retourneert
- naam
snaar
Naam van de HTTP-antwoordheader.
- waarde
snaar
Waarde van de HTTP-antwoordheader.
CancelRequest
Een declaratieve gebeurtenisactie die een netwerkverzoek annuleert.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: CancelRequest) => {...}
- argument
- retourneert
EditRequestCookie
Hiermee kunt u een of meer cookies van het verzoek bewerken. Houd er rekening mee dat het gebruik van de Cookies API de voorkeur verdient, omdat dit rekenkundig minder belastend is.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: EditRequestCookie) => {...}
- argument
- retourneert
- filter
Filter op cookies die gewijzigd zullen worden. Alle lege velden worden genegeerd.
- wijziging
Attributen die moeten worden overschreven in cookies die aan het filter voldoen. Attributen die zijn ingesteld op een lege tekenreeks worden verwijderd.
EditResponseCookie
Hiermee kunt u een of meer cookies van het antwoord bewerken. Houd er rekening mee dat het gebruik van de Cookies API de voorkeur heeft, omdat dit rekenkundig minder belastend is.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: EditResponseCookie) => {...}
- argument
- retourneert
- filter
Filter op cookies die gewijzigd zullen worden. Alle lege velden worden genegeerd.
- wijziging
Attributen die moeten worden overschreven in cookies die aan het filter voldoen. Attributen die zijn ingesteld op een lege tekenreeks worden verwijderd.
FilterResponseCookie
Een cookiefilter in HTTP-reacties.
Eigenschappen
- leeftijdOndergrens
nummer optioneel
Inclusieve ondergrens voor de levensduur van de cookie (gespecificeerd in seconden na de huidige tijd). Alleen cookies waarvan de vervaldatum is ingesteld op 'nu + ageLowerBound' of later, voldoen aan dit criterium. Sessiecookies voldoen niet aan het criterium van dit filter. De levensduur van de cookie wordt berekend op basis van de cookie-attributen 'max-age' of 'expires'. Indien beide zijn gespecificeerd, wordt 'max-age' gebruikt om de levensduur van de cookie te berekenen.
- leeftijdBovengrens
nummer optioneel
Inclusieve bovengrens voor de levensduur van de cookie (gespecificeerd in seconden na de huidige tijd). Alleen cookies waarvan de vervaldatum en -tijd binnen het interval [nu, nu + bovengrens leeftijd] vallen, voldoen aan dit criterium. Sessiecookies en cookies waarvan de vervaldatum en -tijd in het verleden liggen, voldoen niet aan dit filtercriterium. De levensduur van de cookie wordt berekend op basis van de cookie-attributen 'max-age' of 'expires'. Indien beide zijn gespecificeerd, wordt 'max-age' gebruikt om de levensduur van de cookie te berekenen.
- domein
string optioneel
Waarde van het domein-cookiekenmerk.
- verloopt
string optioneel
Waarde van het Expires-cookiekenmerk.
- httpOnly
string optioneel
Het bestaan van het HttpOnly-cookiekenmerk.
- maxAge
nummer optioneel
Waarde van het Max-Age cookie-attribuut
- naam
string optioneel
Naam van een cookie.
- pad
string optioneel
Waarde van het Path-cookiekenmerk.
- zeker
string optioneel
Het bestaan van het Secure cookie-attribuut.
- sessiecookie
boolean optioneel
Filtert sessiecookies. Sessiecookies hebben geen levensduur gespecificeerd in de attributen 'max-age' of 'expires'.
- waarde
string optioneel
De waarde van een cookie kan tussen dubbele aanhalingstekens staan.
HeaderFilter
Filtert verzoekheaders op basis van verschillende criteria. Meerdere criteria worden als een combinatie geëvalueerd.
Eigenschappen
- naamBevat
string | string[] optioneel
Komt overeen als de headernaam alle opgegeven tekenreeksen bevat.
- naamGelijk aan
string optioneel
Komt overeen als de headernaam gelijk is aan de opgegeven tekenreeks.
- naamVoorvoegsel
string optioneel
Komt overeen als de headernaam begint met de opgegeven tekenreeks.
- naamSuffix
string optioneel
Komt overeen als de headernaam eindigt met de opgegeven tekenreeks.
- waardeBevat
string | string[] optioneel
Komt overeen als de headerwaarde alle opgegeven tekenreeksen bevat.
- waarde is gelijk aan
string optioneel
Komt overeen als de waarde in de header gelijk is aan de opgegeven tekenreeks.
- waardeVoorvoegsel
string optioneel
Komt overeen als de waarde in de header begint met de opgegeven tekenreeks.
- waardeSuffix
string optioneel
Komt overeen als de waarde in de header eindigt met de opgegeven tekenreeks.
IgnoreRules
Maskeert alle regels die aan de opgegeven criteria voldoen.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: IgnoreRules) => {...}
- argument
- retourneert
- hasTag
string optioneel
Indien ingesteld, worden regels met de opgegeven tag genegeerd. Deze negering is niet permanent; deze heeft alleen invloed op regels en hun acties in dezelfde fase van het netwerkverzoek. Houd er rekening mee dat regels worden uitgevoerd in aflopende volgorde van hun prioriteit. Deze actie heeft gevolgen voor regels met een lagere prioriteit dan de huidige regel. Regels met dezelfde prioriteit kunnen al dan niet worden genegeerd.
- lagere PrioriteitDan
nummer optioneel
Indien ingesteld, worden regels met een lagere prioriteit dan de opgegeven waarde genegeerd. Deze grens wordt niet permanent opgeslagen; deze is alleen van invloed op regels en hun acties binnen dezelfde fase van het netwerkverzoek.
RedirectByRegEx
Een verzoek wordt omgeleid door een reguliere expressie op de URL toe te passen. De reguliere expressies gebruiken de RE2-syntaxis .
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RedirectByRegEx) => {...}
- argument
- retourneert
- van
snaar
Een matchpatroon dat vastleggingsgroepen kan bevatten. Vastleggingsgroepen worden in de Perl-syntaxis ($1, $2, ...) gebruikt in plaats van de RE2-syntaxis (\1, \2, ...) om dichter bij de reguliere expressies van JavaScript te staan.
- naar
snaar
Bestemmingspatroon.
RedirectRequest
Een declaratieve gebeurtenisactie die een netwerkverzoek omleidt.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RedirectRequest) => {...}
- argument
- retourneert
- redirectUrl
snaar
Bestemming waarnaar het verzoek wordt doorgestuurd.
RedirectToEmptyDocument
Een declaratieve gebeurtenisactie die een netwerkverzoek doorstuurt naar een leeg document.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RedirectToEmptyDocument) => {...}
- argument
- retourneert
RedirectToTransparentImage
Een declaratieve gebeurtenisactie die een netwerkverzoek doorstuurt naar een transparante afbeelding.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RedirectToTransparentImage) => {...}
- argument
- retourneert
RemoveRequestCookie
Verwijdert een of meer cookies van het verzoek. Houd er rekening mee dat het de voorkeur verdient om de Cookies API te gebruiken, omdat dit rekenkundig minder belastend is.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RemoveRequestCookie) => {...}
- argument
- retourneert
- filter
Filter op cookies die verwijderd moeten worden. Alle lege velden worden genegeerd.
RemoveRequestHeader
Verwijdert de requestheader met de opgegeven naam. Gebruik SetRequestHeader en RemoveRequestHeader niet met dezelfde headernaam in hetzelfde verzoek. Elke requestheadernaam komt slechts één keer voor in elk verzoek.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RemoveRequestHeader) => {...}
- argument
- retourneert
- naam
snaar
Naam van de HTTP-verzoekheader (niet hoofdlettergevoelig).
RemoveResponseCookie
Verwijdert een of meer cookies uit het antwoord. Houd er rekening mee dat het de voorkeur verdient om de Cookies API te gebruiken, omdat dit rekenkundig minder belastend is.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RemoveResponseCookie) => {...}
- argument
- retourneert
- filter
Filter op cookies die verwijderd moeten worden. Alle lege velden worden genegeerd.
RemoveResponseHeader
Verwijdert alle responsheaders met de opgegeven namen en waarden.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RemoveResponseHeader) => {...}
- argument
- retourneert
- naam
snaar
Naam van de HTTP-verzoekheader (niet hoofdlettergevoelig).
- waarde
string optioneel
Waarde van de HTTP-verzoekheader (hoofdlettergevoeligheid speelt geen rol).
RequestCookie
Een filter of specificatie van een cookie in HTTP-verzoeken.
Eigenschappen
- naam
string optioneel
Naam van een cookie.
- waarde
string optioneel
De waarde van een cookie kan tussen dubbele aanhalingstekens staan.
RequestMatcher
Koppelt netwerkgebeurtenissen aan verschillende criteria.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: RequestMatcher) => {...}
- argument
- retourneert
- contentType
string[] optioneel
Komt overeen als het MIME-mediatype van een reactie (afkomstig uit de HTTP Content-Type-header) in de lijst voorkomt.
- excludeContentType
string[] optioneel
Komt overeen als het MIME-mediatype van een reactie (afkomstig uit de HTTP Content-Type-header) niet in de lijst voorkomt.
- uitsluiten van aanvraagheaders
HeaderFilter [] optioneel
Komt overeen als geen van de aanvraagheaders overeenkomt met een van de HeaderFilters.
- excludeResponseHeaders
HeaderFilter [] optioneel
Komt overeen als geen van de responseheaders overeenkomt met een van de HeaderFilters.
- firstPartyForCookiesUrl
UrlFilter optioneel
VerouderdGenegeerd sinds release 82.
Komt overeen als aan de voorwaarden van de UrlFilter is voldaan voor de 'first party'-URL van het verzoek. De 'first party'-URL van een verzoek kan, indien aanwezig, verschillen van de doel-URL van het verzoek en beschrijft wat als 'first party' wordt beschouwd voor controles op cookies van derden.
- verzoekHeaders
HeaderFilter [] optioneel
Komt overeen als een van de headers van het verzoek overeenkomt met een van de headerfilters.
- resourceType
ResourceType [] optioneel
Er wordt gecontroleerd of het type verzoek in de lijst voorkomt. Verzoeken die niet aan een van de typen voldoen, worden gefilterd.
- antwoordHeaders
HeaderFilter [] optioneel
Er wordt een match gevonden als een van de headers in het antwoord overeenkomt met een van de headerfilters.
- fasen
Podium [] optioneel
Bevat een lijst met tekenreeksen die de fasen beschrijven. Toegestane waarden zijn 'onBeforeRequest', 'onBeforeSendHeaders', 'onHeadersReceived' en 'onAuthRequired'. Als dit attribuut aanwezig is, worden de toepasselijke fasen beperkt tot de vermelde fasen. Houd er rekening mee dat de volledige voorwaarde alleen van toepassing is op fasen die compatibel zijn met alle attributen.
- thirdPartyForCookies
boolean optioneel
VerouderdGenegeerd sinds release 87.
Indien ingesteld op 'true', worden verzoeken gematcht die onderworpen zijn aan het cookiebeleid van derden. Indien ingesteld op 'false', worden alle andere verzoeken gematcht.
- URL
UrlFilter optioneel
Komt overeen als de voorwaarden van de UrlFilter voor de URL van het verzoek zijn vervuld.
ResponseCookie
Een specificatie van een cookie in HTTP-reacties.
Eigenschappen
- domein
string optioneel
Waarde van het domein-cookiekenmerk.
- verloopt
string optioneel
Waarde van het Expires-cookiekenmerk.
- httpOnly
string optioneel
Het bestaan van het HttpOnly-cookiekenmerk.
- maxAge
nummer optioneel
Waarde van het Max-Age cookie-attribuut
- naam
string optioneel
Naam van een cookie.
- pad
string optioneel
Waarde van het Path-cookiekenmerk.
- zeker
string optioneel
Het bestaan van het Secure cookie-attribuut.
- waarde
string optioneel
De waarde van een cookie kan tussen dubbele aanhalingstekens staan.
SendMessageToExtension
Activeert de declarativeWebRequest.onMessage -gebeurtenis.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: SendMessageToExtension) => {...}
- argument
- retourneert
- bericht
snaar
De waarde die wordt doorgegeven in het
messagevan het woordenboek dat aan de gebeurtenisafhandelaar wordt doorgegeven.
SetRequestHeader
Stelt de aanvraagheader met de opgegeven naam in op de opgegeven waarde. Als er nog geen header met de opgegeven naam bestond, wordt er een nieuwe aangemaakt. De vergelijking van headernamen is altijd niet hoofdlettergevoelig. Elke aanvraagheadernaam komt slechts één keer voor in elk verzoek.
Eigenschappen
- constructeur
leegte
De
constructorziet er als volgt uit:(arg: SetRequestHeader) => {...}
- argument
- retourneert
- naam
snaar
Naam van de HTTP-verzoekheader.
- waarde
snaar
Waarde van de HTTP-verzoekheader.
Stage
Enum
"onBeforeRequest" "onBeforeSendHeaders" "onHeadersReceived" "onAuthRequired"
Evenementen
onMessage
chrome.declarativeWebRequest.onMessage.addListener(
callback: function,
)
Deze functie wordt geactiveerd wanneer een bericht wordt verzonden via declarativeWebRequest.SendMessageToExtension vanuit een actie van de declaratieve webverzoek-API.
Parameters
- terugbelverzoek
functie
De
callbackparameter ziet er als volgt uit:(details: object) => void
- details
voorwerp
- documentId
string optioneel
De UUID van het document waarmee het verzoek is ingediend.
- documentLevenscyclus
De levenscyclus waarin het document zich bevindt.
- frameId
nummer
De waarde 0 geeft aan dat het verzoek plaatsvindt in het hoofdvenster; een positieve waarde geeft de ID aan van een subvenster waarin het verzoek plaatsvindt. Als het document van een (sub)venster wordt geladen (
typeismain_frameofsub_frame), geeftframeIdde ID van dit venster aan, niet de ID van het buitenste venster. Venster-ID's zijn uniek binnen een tabblad. - frameType
Het type frame waarin de navigatie plaatsvond.
- bericht
snaar
Het bericht verzonden door het aanroepende script.
- methode
snaar
Standaard HTTP-methode.
- parentDocumentId
string optioneel
De UUID van het bovenliggende document waartoe dit frame behoort. Deze wordt niet ingesteld als er geen bovenliggend document is.
- parentFrameId
nummer
ID van het frame dat het frame omsluit dat het verzoek heeft verzonden. Stel in op -1 als er geen ouderframe bestaat.
- verzoek-ID
snaar
Het ID van het verzoek. Verzoek-ID's zijn uniek binnen een browsersessie. Daardoor kunnen ze worden gebruikt om verschillende gebeurtenissen van hetzelfde verzoek aan elkaar te koppelen.
- fase
De fase van het netwerkverzoek waarin de gebeurtenis werd geactiveerd.
- tabId
nummer
De ID van het tabblad waarop het verzoek plaatsvindt. Stel deze in op -1 als het verzoek niet aan een tabblad is gekoppeld.
- tijdstempel
nummer
Het tijdstip waarop dit signaal wordt geactiveerd, in milliseconden sinds het begin van het tijdvak.
Hoe de aangevraagde bron zal worden gebruikt.
- URL
snaar
onRequest
Biedt de Declarative Event API, bestaande uit addRules , removeRules en getRules .