diff options
Diffstat (limited to 'files/fr/mozilla/add-ons/webextensions/api/webrequest')
33 files changed, 2025 insertions, 2192 deletions
diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/blockingresponse/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/blockingresponse/index.md index 3308f35fc6..8d19a6f4f9 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/blockingresponse/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/blockingresponse/index.md @@ -13,57 +13,55 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/BlockingResponse --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Un objet de ce type est renvoyé par les auditeurs d'événements qui ont défini le <code>"blocking"</code> dans leur argument <code>extraInfoSpec</code>.</p> +Un objet de ce type est renvoyé par les auditeurs d'événements qui ont défini le `"blocking"` dans leur argument `extraInfoSpec`. -<p>En définissant des propriétés particulières dans <code>BlockingResponse</code>, l'auditeur peut modifier les requêtes réseau.</p> +En définissant des propriétés particulières dans `BlockingResponse`, l'auditeur peut modifier les requêtes réseau. -<p>Notez que vous ne pouvez pas définir toutes les propriétés de cet objet dans chaque auditeur : les propriétés que vous pouvez définir dépendent de l'événement qui a déclenché cet auditeur, comme détaillé ci-dessous.</p> +Notez que vous ne pouvez pas définir toutes les propriétés de cet objet dans chaque auditeur : les propriétés que vous pouvez définir dépendent de l'événement qui a déclenché cet auditeur, comme détaillé ci-dessous. -<h2 id="Type">Type</h2> +## Type -<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> +Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes : -<dl> - <dt><code>authCredentials</code>{{optional_inline}}</dt> - <dd><p><code>object</code>. Si elle est définie, la demande est faite en utilisant les informations d'identification données. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}. La propriété <code>authCredentials</code> est un objet avec les propriétés suivantes :</p> - <dl> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur à fournir.</dd> - <dt><code>password</code></dt> - <dd><code>string</code>. Mot de passe à fournir.</dd> - </dl> - </dd> - <dt><code>cancel</code>{{optional_inline}}</dt> - <dd><code>boolean</code>. Si <code>true</code>, la demande est annulée. Vous ne pouvez définir cette propriété dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}, {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}, {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}, et {{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}.</dd> - <dt><code>redirectUrl</code>{{optional_inline}}</dt> - <dd><p><code>string</code>. Il s'agit d'une URL, et si elle est définie, la requête originale est redirigée vers cette URL. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} ou {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}.</p> - <p>Les redirections vers des schémas non-HTTP tels que data : sont autorisées, mais elles ne sont pas prises en charge actuellement ({{bug("707624")}}). Les redirections utilisent la même méthode de requête que la requête originale à moins qu'elle ne soit initiée à partir de l'étape <code>onHeadersReceived</code>, auquel cas la redirection utilise la méthode GET.</p> - <p>Si une extension veut rediriger une URL publique (par exemple HTTPS) vers une <a href="/fr/Add-ons/WebExtensions/user_interface/Extension_pages">page d'extension</a>, le fichier manifest.json de l'extension doit contenir une clé <a href="/fr/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a> qui liste l'URL de la page d'extension.</p></dd> - <dt><code>requestHeaders</code>{{optional_inline}}</dt> - <dd> - <p>{{WebExtAPIRef('webRequest.HttpHeaders')}}. C'est un objet {{WebExtAPIRef('webRequest.HttpHeaders', "HttpHeaders")}}, un tableau dans lequel chaque objet représente un en-tête. Si elle est définie, la demande est faite avec ces en-têtes plutôt qu'avec les en-têtes d'origine. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} .</p> - </dd> - <dt><code>responseHeaders</code>{{optional_inline}}</dt> - <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. C'est un objet {{WebExtAPIRef('webRequest.HttpHeaders', "HttpHeaders")}}, un tableau dans lequel chaque objet représente un en-tête. Si elle est définie, le serveur est supposé avoir répondu avec ces en-têtes de réponse au lieu des originaux. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}. Si plusieurs extensions tentent de définir le même en-tête (par exemple, <code>Content-Security-Policy</code>), une seule des modifications sera réussie.</dd> - <dt><code>upgradeToSecure</code>{{optional_inline}}</dt> - <dd><code>boolean</code>. Si la valeur <code>true</code> est est définie et que la requête originale est une requête HTTP, cela empêchera l'envoi de la requête originale et fera plutôt une requête sécurisée (HTTPS). Si une extension renvoie <code>redirectUrl</code> dans <code>onBeforeRequest</code>, alors <code>upgradeToSecure</code> sera ignoré pour cette requête. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}.</dd> -</dl> +- `authCredentials`{{optional_inline}} -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + - : `object`. Si elle est définie, la demande est faite en utilisant les informations d'identification données. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}. La propriété `authCredentials` est un objet avec les propriétés suivantes : -<p>{{Compat("webextensions.api.webRequest.BlockingResponse")}}</p> + - `username` + - : `string`. Nom d'utilisateur à fournir. + - `password` + - : `string`. Mot de passe à fournir. -<p>{{WebExtExamples}}</p> +- `cancel`{{optional_inline}} + - : `boolean`. Si `true`, la demande est annulée. Vous ne pouvez définir cette propriété dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}, {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}, {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}, et {{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}. +- `redirectUrl`{{optional_inline}} -<div class="note"><p><strong>Note :</strong></p> + - : `string`. Il s'agit d'une URL, et si elle est définie, la requête originale est redirigée vers cette URL. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} ou {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}. -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> -</div> + Les redirections vers des schémas non-HTTP tels que data : sont autorisées, mais elles ne sont pas prises en charge actuellement ({{bug("707624")}}). Les redirections utilisent la même méthode de requête que la requête originale à moins qu'elle ne soit initiée à partir de l'étape `onHeadersReceived`, auquel cas la redirection utilise la méthode GET. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. + Si une extension veut rediriger une URL publique (par exemple HTTPS) vers une [page d'extension](/fr/Add-ons/WebExtensions/user_interface/Extension_pages), le fichier manifest.json de l'extension doit contenir une clé [web_accessible_resources](/fr/Add-ons/WebExtensions/manifest.json/web_accessible_resources) qui liste l'URL de la page d'extension. + +- `requestHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. C'est un objet {{WebExtAPIRef('webRequest.HttpHeaders', "HttpHeaders")}}, un tableau dans lequel chaque objet représente un en-tête. Si elle est définie, la demande est faite avec ces en-têtes plutôt qu'avec les en-têtes d'origine. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} . +- `responseHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. C'est un objet {{WebExtAPIRef('webRequest.HttpHeaders', "HttpHeaders")}}, un tableau dans lequel chaque objet représente un en-tête. Si elle est définie, le serveur est supposé avoir répondu avec ces en-têtes de réponse au lieu des originaux. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}. Si plusieurs extensions tentent de définir le même en-tête (par exemple, `Content-Security-Policy`), une seule des modifications sera réussie. +- `upgradeToSecure`{{optional_inline}} + - : `boolean`. Si la valeur `true` est est définie et que la requête originale est une requête HTTP, cela empêchera l'envoi de la requête originale et fera plutôt une requête sécurisée (HTTPS). Si une extension renvoie `redirectUrl` dans `onBeforeRequest`, alors `upgradeToSecure` sera ignoré pour cette requête. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.BlockingResponse")}} + +{{WebExtExamples}} + +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. + +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -90,5 +88,4 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/BlockingResponse // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/certificateinfo/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/certificateinfo/index.md index dd93db7d77..fec092c8e5 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/certificateinfo/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/certificateinfo/index.md @@ -12,64 +12,61 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/CertificateInfo --- -<div>{{AddonSidebar()}}</div> - -<p>Un objet décrivant un seul <a href="https://tools.ietf.org/html/rfc5280">certificat X.509</a>.</p> - -<p>L'objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}} retourné par l'objet {{WebExtAPIRef("webRequest.getSecurityInfo()")}} API inclut une propriété de <code>certificats</code> qui est un tableau de ces objets.</p> - -<h2 id="Type">Type</h2> - -<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> - -<dl> - <dt><code>fingerprint</code></dt> - <dd><p><code>Object</code>. Un objet avec les propriétés suivantes :</p> - <dl> - <dt><code>sha1</code></dt> - <dd><code>String</code>. SHA-1 hash de l'encodage DER du certificat.</dd> - <dt><code>sha256</code></dt> - <dd><code>String</code>. SHA-256 hash de l'encodage DER du certificat.</dd> - </dl> - </dd> - <dt><code>isBuiltInRoot</code></dt> - <dd> - <p><code>Boolean</code>. <code>true</code> si le certificat est l'une des racines de confiance installées dans le navigateur, sinon <code>false</code>.</p> - </dd> - <dt><code>issuer</code></dt> - <dd><p><code>String</code>. Nom de l'organisation qui a délivré ce certificat, représenté par un nom distinctif et formaté sous la forme d'une liste de noms distinctifs relatifs séparés par des virgules, chacun de la forme "type=value".</p> - <p>Par exemple: "CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US".</p></dd> - <dt><code>rawDER</code></dt> - <dd><code>Array</code> de <code>Number</code>. Si <a href="/fr/Add-ons/WebExtensions/API/webRequest/getSecurityInfo"><code>webRequest.getSecurityInfo()</code></a> a été appelé avec l'option <code>rawDER</code> présent et mis à <code>true</code>, ceci contiendra l'encodage DER du certificat.</dd> - <dt><code>serialNumber</code></dt> - <dd><code>String</code>. Le <a href="https://tools.ietf.org/html/rfc5280#section-4.1.2.2">numéro de série</a> du certificat.</dd> - <dt><code>subject</code></dt> - <dd><p><code>String</code>. Nom de l'organisation qui a délivré ce certificat, représenté par un nom distinctif et formaté sous la forme d'une liste de noms distinctifs relatifs séparés par des virgules, chacun de la forme "type=value".</p> - <p>Par exemple: "CN=*.cdn.mozilla.net,O=Mozilla Corporation,L=Mountain View,ST=California,C=US".</p></dd> - <dt><code>subjectPublicKeyInfoDigest</code></dt> - <dd> - <p><code>Object</code>. Un objet contenant les propriétés suivantes :</p> - - <dl> - <dt><code>sha256</code></dt> - <dd><code>String</code>. Base64 encodé SHA-256 hash de l'<a href="https://tools.ietf.org/html/rfc5280#section-4.1.2.7">information de clé publique</a> codée DER.</dd> - </dl> - </dd> - <dt><code>validity</code></dt> - <dd> - <p><code>Object</code>. Période de validité du certificat. Un objet contenant les propriétés suivantes :</p> - - <dl> - <dt><code>start</code></dt> - <dd><code>Number</code>. Le début de la période de validité du certificat, en <a href="https://en.wikipedia.org/wiki/Unix_time" rel="noopener">millisecondes depuis l'époque</a>.</dd> - <dt><code>end</code></dt> - <dd><code>Number</code>. La fin de la période de validité du certificat, en <a href="https://en.wikipedia.org/wiki/Unix_time" rel="noopener">millisecondes depuis l'époque</a>.</dd> - </dl> - </dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.CertificateInfo", 10)}}</p> - -<p>{{WebExtExamples}}</p> +{{AddonSidebar()}} + +Un objet décrivant un seul [certificat X.509](https://tools.ietf.org/html/rfc5280). + +L'objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}} retourné par l'objet {{WebExtAPIRef("webRequest.getSecurityInfo()")}} API inclut une propriété de `certificats` qui est un tableau de ces objets. + +## Type + +Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes : + +- `fingerprint` + + - : `Object`. Un objet avec les propriétés suivantes : + + - `sha1` + - : `String`. SHA-1 hash de l'encodage DER du certificat. + - `sha256` + - : `String`. SHA-256 hash de l'encodage DER du certificat. + +- `isBuiltInRoot` + - : `Boolean`. `true` si le certificat est l'une des racines de confiance installées dans le navigateur, sinon `false`. +- `issuer` + + - : `String`. Nom de l'organisation qui a délivré ce certificat, représenté par un nom distinctif et formaté sous la forme d'une liste de noms distinctifs relatifs séparés par des virgules, chacun de la forme "type=value". + + Par exemple: "CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US". + +- `rawDER` + - : `Array` de `Number`. Si [`webRequest.getSecurityInfo()`](/fr/Add-ons/WebExtensions/API/webRequest/getSecurityInfo) a été appelé avec l'option `rawDER` présent et mis à `true`, ceci contiendra l'encodage DER du certificat. +- `serialNumber` + - : `String`. Le [numéro de série](https://tools.ietf.org/html/rfc5280#section-4.1.2.2) du certificat. +- `subject` + + - : `String`. Nom de l'organisation qui a délivré ce certificat, représenté par un nom distinctif et formaté sous la forme d'une liste de noms distinctifs relatifs séparés par des virgules, chacun de la forme "type=value". + + Par exemple: "CN=\*.cdn.mozilla.net,O=Mozilla Corporation,L=Mountain View,ST=California,C=US". + +- `subjectPublicKeyInfoDigest` + + - : `Object`. Un objet contenant les propriétés suivantes : + + - `sha256` + - : `String`. Base64 encodé SHA-256 hash de l'[information de clé publique](https://tools.ietf.org/html/rfc5280#section-4.1.2.7) codée DER. + +- `validity` + + - : `Object`. Période de validité du certificat. Un objet contenant les propriétés suivantes : + + - `start` + - : `Number`. Le début de la période de validité du certificat, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). + - `end` + - : `Number`. La fin de la période de validité du certificat, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.CertificateInfo", 10)}} + +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/filterresponsedata/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/filterresponsedata/index.md index 07ded4756a..f3b657221f 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/filterresponsedata/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/filterresponsedata/index.md @@ -12,41 +12,41 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Utilisez cette fonction pour créer un objet {{WebExtAPIRef("webRequest.StreamFilter")}} pour une requête particulière.<br> - Vous pouvez ensuite utiliser le filtre de flux pour surveiller et modifier la réponse. Vous appelez typiquement cette fonction à partir d'un écouteur d'événements <code>webRequest</code>.</p> +Utilisez cette fonction pour créer un objet {{WebExtAPIRef("webRequest.StreamFilter")}} pour une requête particulière. +Vous pouvez ensuite utiliser le filtre de flux pour surveiller et modifier la réponse. Vous appelez typiquement cette fonction à partir d'un écouteur d'événements `webRequest`. -<p>Pour utiliser cette API, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "webRequestBlocking", ainsi que les permissions normales nécessaires à l'auditeur de l'événement (la permission "webRequest" et la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission hôte </a>pour l'hôte).</p> +Pour utiliser cette API, vous devez avoir la [permission de l'API](/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) "webRequestBlocking", ainsi que les permissions normales nécessaires à l'auditeur de l'événement (la permission "webRequest" et la [permission hôte ](/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions)pour l'hôte). -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">var filter = browser.webRequest.filterResponseData( +```js +var filter = browser.webRequest.filterResponseData( requestId // string ) -</pre> +``` -<h3 id="Paramètres">Paramètres</h3> +### Paramètres -<dl> - <dt><code>requestId</code></dt> - <dd><code>string</code>. ID de la requête à filtrer. Vous pouvez l'obtenir à partir de l'objet de <code>details</code> qui est passé dans n'importe quel écouteur d'événement <code>webRequest</code>.</dd> -</dl> +- `requestId` + - : `string`. ID de la requête à filtrer. Vous pouvez l'obtenir à partir de l'objet de `details` qui est passé dans n'importe quel écouteur d'événement `webRequest`. -<h3 id="Valeur_retournée">Valeur retournée</h3> +### Valeur retournée -<p>Un objet {{WebExtAPIRef("webRequest.StreamFilter")}} que vous pouvez utiliser pour surveiller et modifier la réponse.</p> +Un objet {{WebExtAPIRef("webRequest.StreamFilter")}} que vous pouvez utiliser pour surveiller et modifier la réponse. -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple, tiré de l'extension <a href="https://github.com/mdn/webextensions-examples/tree/master/http-response">http-response</a>, crée un filtre dans {{WebExtAPIRef("webRequest.onBeforeRequest")}} et l'utilise pour modifier la réponse :</p> +Cet exemple, tiré de l'extension [http-response](https://github.com/mdn/webextensions-examples/tree/master/http-response), crée un filtre dans {{WebExtAPIRef("webRequest.onBeforeRequest")}} et l'utilise pour modifier la réponse : -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let decoder = new TextDecoder("utf-8"); let encoder = new TextEncoder(); - filter.ondata = event => { + filter.ondata = event => { let str = decoder.decode(event.data, {stream: true}); // Just change any instance of Example in the HTTP response // to WebExtension Example. @@ -63,10 +63,10 @@ browser.webRequest.onBeforeRequest.addListener( {urls: ["https://example.com/*"], types: ["main_frame"]}, ["blocking"] ); -</pre> +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.filterResponseData", 10)}}</p> +{{Compat("webextensions.api.webRequest.filterResponseData", 10)}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/getsecurityinfo/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/getsecurityinfo/index.md index 5ab5f213f6..466ff2d36b 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/getsecurityinfo/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/getsecurityinfo/index.md @@ -12,54 +12,53 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/getSecurityInfo --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Utilisez cette fonction pour obtenir des informations détaillées sur la connexion <a href="/fr/docs/Glossaire/TLS">TLS</a> associée à une demande particulière..</p> +Utilisez cette fonction pour obtenir des informations détaillées sur la connexion [TLS](/fr/docs/Glossaire/TLS) associée à une demande particulière.. -<p>Vous passez à cette fonction la <code>requestId</code> pour la requête en question, et quelques paramètres supplémentaires optionnels. Il retourne une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera résolue à un objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}}.</p> +Vous passez à cette fonction la `requestId` pour la requête en question, et quelques paramètres supplémentaires optionnels. Il retourne une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui sera résolue à un objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}}. -<p>Vous ne pouvez appeler cette fonction qu'à partir de l'écouteur {{WebExtAPIRef("webRequest.onHeadersReceived")}}. La <code>requestId</code> peut être trouvée dans l'objet <code>details</code> object qui est passé dans l'écouteur.</p> +Vous ne pouvez appeler cette fonction qu'à partir de l'écouteur {{WebExtAPIRef("webRequest.onHeadersReceived")}}. La `requestId` peut être trouvée dans l'objet `details` object qui est passé dans l'écouteur. -<p>Vous devez également passer l'option "blocking" à <code>webRequest.onHeadersReceived.addListener()</code>. Ainsi, pour utiliser cette API, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "webRequestBlocking", ainsi que les permissions normales nécessaires pour utiliser les écouteurs <code>webRequest</code> (la permission "webRequest" et la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission hôte</a> pour le hôte).</p> +Vous devez également passer l'option "blocking" à `webRequest.onHeadersReceived.addListener()`. Ainsi, pour utiliser cette API, vous devez avoir la [permission de l'API](/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) "webRequestBlocking", ainsi que les permissions normales nécessaires pour utiliser les écouteurs `webRequest` (la permission "webRequest" et la [permission hôte](/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions) pour le hôte). -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">var gettingInfo = browser.webRequest.getSecurityInfo( +```js +var gettingInfo = browser.webRequest.getSecurityInfo( requestId, // string options // object ) -</pre> +``` -<h3 id="Paramètres">Paramètres</h3> +### Paramètres -<dl> - <dt><code>requestId</code></dt> - <dd><code>string</code>. ID de la requête pour laquelle vous souhaitez obtenir des informations de sécurité. Vous pouvez l'obtenir à partir de l'objet de <code>details</code> qui est passé dans n'importe quel écouteur d'événement <code>webRequest</code>.</dd> - <dt><code>options</code></dt> - <dd><p><code>object</code>. Un objet qui peut contenir l'une des propriétés suivantes, toutes facultatives :</p> - <dl> - <dt><code>certificateChain</code> {{optional_inline}}</dt> - <dd><code>boolean</code>. Si <code>true</code>, l'objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}} retourné inclura toute la chaîne de certificats jusqu'à et y compris la racine de confiance. Si <code>false</code>, <br> - il n'inclura que le certificat du serveur. La valeur par défaut est <code>false</code>.</dd> - <dt><code>rawDER</code> {{optional_inline}}</dt> - <dd><code>boolean</code>. Si true, chaque propriété {{WebExtAPIRef("webRequest.CertificateInfo", "CertificateInfo")}} dans le {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo.certificates")}} contiendra une propriété <code>rawDER</code>. Il contient le DER-encoded ASN.1 qui comprend les données du certificat.</dd> - </dl> - </dd> -</dl> +- `requestId` + - : `string`. ID de la requête pour laquelle vous souhaitez obtenir des informations de sécurité. Vous pouvez l'obtenir à partir de l'objet de `details` qui est passé dans n'importe quel écouteur d'événement `webRequest`. +- `options` -<h3 id="Valeur_retournée">Valeur retournée</h3> + - : `object`. Un objet qui peut contenir l'une des propriétés suivantes, toutes facultatives : -<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui se résout en un objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}}.</p> + - `certificateChain` {{optional_inline}} + - : `boolean`. Si `true`, l'objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}} retourné inclura toute la chaîne de certificats jusqu'à et y compris la racine de confiance. Si `false`, + il n'inclura que le certificat du serveur. La valeur par défaut est `false`. + - `rawDER` {{optional_inline}} + - : `boolean`. Si true, chaque propriété {{WebExtAPIRef("webRequest.CertificateInfo", "CertificateInfo")}} dans le {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo.certificates")}} contiendra une propriété `rawDER`. Il contient le DER-encoded ASN.1 qui comprend les données du certificat. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +### Valeur retournée -<p>{{Compat("webextensions.api.webRequest.getSecurityInfo", 10)}}</p> +Une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui se résout en un objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}}. -<h2 id="Exemples">Exemples</h2> +## Compatibilité du navigateur -<p>Cet exemple écoute toutes les requêtes HTTPS à "mozilla.org" ou ses sous-domaines, et enregistre le nom de l'objet dans le certificat du serveur :</p> +{{Compat("webextensions.api.webRequest.getSecurityInfo", 10)}} -<pre class="brush: js">async function logSubject(details) { +## Exemples + +Cet exemple écoute toutes les requêtes HTTPS à "mozilla.org" ou ses sous-domaines, et enregistre le nom de l'objet dans le certificat du serveur : + +```js +async function logSubject(details) { try { let securityInfo = await browser.webRequest.getSecurityInfo(details.requestId, {}); console.log(details.url); @@ -75,11 +74,13 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/getSecurityInfo browser.webRequest.onHeadersReceived.addListener(logSubject, {urls: ["https://*.mozilla.org/*"]}, ["blocking"] -);</pre> +); +``` -<p>Cet exemple écoute toutes les requêtes HTTPS à "mozilla.org" ou ses sous-domaines, et enregistre le nom dans le certificat racine de confiance :</p> +Cet exemple écoute toutes les requêtes HTTPS à "mozilla.org" ou ses sous-domaines, et enregistre le nom dans le certificat racine de confiance : -<pre class="brush: js">async function logRoot(details) { +```js +async function logRoot(details) { try { let securityInfo = await browser.webRequest.getSecurityInfo( details.requestId, @@ -98,6 +99,7 @@ browser.webRequest.onHeadersReceived.addListener(logSubject, browser.webRequest.onHeadersReceived.addListener(logRoot, {urls: ["https://*.mozilla.org/*"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/handlerbehaviorchanged/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/handlerbehaviorchanged/index.md index c1848d3c92..4dd6c859f1 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/handlerbehaviorchanged/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/handlerbehaviorchanged/index.md @@ -13,55 +13,49 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/handlerBehaviorChanged --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}}Cette fonction peut être utilisée pour s'assurer que les auditeurs d'événements sont appliqués correctement lorsque les pages se trouvent dans le cache en mémoire du navigateur.Si le navigateur a chargé une page et que la page est rechargée, le navigateur peut recharger la page à partir de son cache en mémoire, et dans ce cas, les événements ne seront pas déclenchés pour la demande. -<div>Cette fonction peut être utilisée pour s'assurer que les auditeurs d'événements sont appliqués correctement lorsque les pages se trouvent dans le cache en mémoire du navigateur.</div> +Supposons que le travail d'une extension consiste à bloquer les requêtes Web par rapport à un modèle, et le scénario suivant se produit : -<div></div> +- L'utilisateur charge une page qui inclut une requête particulière, et le modèle permet la requête. +- La ressource est chargée et mise en cache en mémoire. +- Les modèles de l'extension sont mis à jour, de telle sorte que la ressource ne serait plus autorisée. +- L'utilisateur recharge la page. -<div>Si le navigateur a chargé une page et que la page est rechargée, le navigateur peut recharger la page à partir de son cache en mémoire, et dans ce cas, les événements ne seront pas déclenchés pour la demande.</div> +Comme la page sera rechargée à partir du cache mémoire, il se peut que l'auditeur ne soit plus appelé et que la requête soit chargée malgré la nouvelle stratégie de l'extension. -<p>Supposons que le travail d'une extension consiste à bloquer les requêtes Web par rapport à un modèle, et le scénario suivant se produit :</p> +La fonction `handlerBehaviorChanged()` est conçue pour résoudre ce problème. Il vide le cache en mémoire, de sorte que les rechargements de page déclenchent les auditeurs d'événements. -<ul> - <li>L'utilisateur charge une page qui inclut une requête particulière, et le modèle permet la requête.</li> - <li>La ressource est chargée et mise en cache en mémoire.</li> - <li>Les modèles de l'extension sont mis à jour, de telle sorte que la ressource ne serait plus autorisée.</li> - <li>L'utilisateur recharge la page.</li> -</ul> +Parce que `handlerBehaviorChanged()` nettoie le cache, cela peut être coûteux et mauvais pour la performance. Le module webRequest définit une propriété en lecture seule {{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES", "MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}} : faire plus d'appels que ce nombre en 10 minutes n'aura aucun effet. -<p>Comme la page sera rechargée à partir du cache mémoire, il se peut que l'auditeur ne soit plus appelé et que la requête soit chargée malgré la nouvelle stratégie de l'extension.</p> +L'implémentation de la mise en cache, d'où la nécessité de cette fonction, varie d'un navigateur à l'autre, de sorte que dans certains navigateurs, cette fonction ne fait rien. -<p>La fonction <code>handlerBehaviorChanged()</code> est conçue pour résoudre ce problème. Il vide le cache en mémoire, de sorte que les rechargements de page déclenchent les auditeurs d'événements.</p> +Il s'agit d'une fonction asynchrone qui renvoie une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise). -<p>Parce que <code>handlerBehaviorChanged()</code> nettoie le cache, cela peut être coûteux et mauvais pour la performance. Le module webRequest définit une propriété en lecture seule {{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES", "MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}} : faire plus d'appels que ce nombre en 10 minutes n'aura aucun effet.</p> +## Syntaxe -<p>L'implémentation de la mise en cache, d'où la nécessité de cette fonction, varie d'un navigateur à l'autre, de sorte que dans certains navigateurs, cette fonction ne fait rien.</p> +```js +var flushingCache = browser.webRequest.handlerBehaviorChanged() +``` -<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> +### Paramètres -<h2 id="Syntaxe">Syntaxe</h2> +None. -<pre class="brush: js">var flushingCache = browser.webRequest.handlerBehaviorChanged() -</pre> +### Valeur retournée -<h3 id="Paramètres">Paramètres</h3> +Une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui sera remplie sans arguments, lorsque l'opération sera terminée. -<p>None.</p> +## Compatibilité du navigateur -<h3 id="Valeur_retournée">Valeur retournée</h3> +{{Compat("webextensions.api.webRequest.handlerBehaviorChanged")}} -<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments, lorsque l'opération sera terminée.</p> +## Exemples -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +Dans le snippet suivant, nous vidons le cache en mémoire via un appel à `handlerBehaviorChanged()`, et signalons cette action en enregistrant un message approprié à la console. -<p>{{Compat("webextensions.api.webRequest.handlerBehaviorChanged")}}</p> - -<h2 id="Exemples">Exemples</h2> - -<p>Dans le snippet suivant, nous vidons le cache en mémoire via un appel à <code>handlerBehaviorChanged()</code>, et signalons cette action en enregistrant un message approprié à la console.</p> - -<pre class="brush: js">function onFlushed() { +```js +function onFlushed() { console.log(`In-memory cache flushed`); } @@ -70,19 +64,18 @@ function onError(error) { } var flushingCache = browser.webRequest.handlerBehaviorChanged(); -flushingCache.then(onFlushed, onError);</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +flushingCache.then(onFlushed, onError); +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -109,5 +102,4 @@ flushingCache.then(onFlushed, onError);</pre> // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/httpheaders/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/httpheaders/index.md index 675f9ce1cb..d5dd446ed2 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/httpheaders/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/httpheaders/index.md @@ -13,38 +13,34 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/HttpHeaders --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Un tableau d'en-tetes HTTP. Chaque en-tête est représenté comme un objet avec deux propriétés : <code>name</code> et <code>valeur</code> ou <code>binaryValue</code>.</p> +Un tableau d'en-tetes HTTP. Chaque en-tête est représenté comme un objet avec deux propriétés : `name` et `valeur` ou `binaryValue`. -<h2 id="Type">Type</h2> +## Type -<p>Un <code>tableau</code> d'<code>objet</code>s. Chaque objet a les propriétés suivantes :</p> +Un `tableau` d'`objet`s. Chaque objet a les propriétés suivantes : -<dl> - <dt><code>name</code></dt> - <dd><code>string</code>. Nom de l'en-tête HTTP.</dd> - <dt><code>value</code>{{optional_inline}}</dt> - <dd><code>string</code>. Valeur de l'en-tete HTTP si elle peut être représentée par UTF-8. Cette propriété ou valeur binaire doit être présente.</dd> - <dt><code>binaryValue</code>{{optional_inline}}</dt> - <dd><code>array</code> d'<code><code>integer</code></code>. Valeur de l'en-tête HTTP s'il ne peut pas être représenté par UTF-8, représenté par en octets (0..255). Soit cette propriété ou cette <code>valeur</code> doit être présente.</dd> -</dl> +- `name` + - : `string`. Nom de l'en-tête HTTP. +- `value`{{optional_inline}} + - : `string`. Valeur de l'en-tete HTTP si elle peut être représentée par UTF-8. Cette propriété ou valeur binaire doit être présente. +- `binaryValue`{{optional_inline}} + - : `array` d'`integer`. Valeur de l'en-tête HTTP s'il ne peut pas être représenté par UTF-8, représenté par en octets (0..255). Soit cette propriété ou cette `valeur` doit être présente. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.HttpHeaders")}}</p> +{{Compat("webextensions.api.webRequest.HttpHeaders")}} -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} -<div class="note"><p><strong>Note :</strong></p> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> - -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> - -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -71,5 +67,4 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/HttpHeaders // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/index.md index f5c4b587ca..59598f83ff 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/index.md @@ -12,164 +12,140 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest --- -<p>{{AddonSidebar}}</p> - -<p>Ajout d'écouteurs d'événements pour les différentes étapes d'une requête HTTP. L'écouteur de l'événement reçoit des informations détaillées sur la demande et peut modifier ou annuler la demande.</p> - -<p>Chaque événement est déclenché à un stade particulier de la demande. La séquence typique des événements est la suivante :</p> - -<p><img alt="" src="webRequest-flow.png"></p> - -<p>{{WebExtAPIRef("webRequest.onErrorOccurred", "onErrorOccurred")}} peut être tiré à tout moment pendant la requête. Notez également que parfois la séquence des événements peut différer de ceci : par exemple, dans Firefox, lors d'une mise à niveau <a href="/fr/docs/Sécurité/HTTP_Strict_Transport_Security">HSTS</a>, l'événement <code>onBeforeRedirect</code> sera déclenché immédiatement après <code>onBeforeRequest</code>.</p> - -<p>Tous les évènements (excepté <code>onErrorOccurred</code>) peuvent prendre trois arguments pour <code>addListener()</code>:</p> - -<ul> - <li>Le receveur d'évènements lui-même</li> - <li>un {{WebExtAPIRef("webRequest.RequestFilter", "filter")}} objet, afin de n'être notifié que pour les requêtes effectués par des URLs particulières ou pour un type particulier de ressources.</li> - <li>un <code>extraInfoSpec</code> objet optionnel. Vous pouvez utiliser celui-ci pour passer des instructions spécifiques à l'évènement supplémentaires.</li> -</ul> - -<p>Une fonction d'écoute reçoit un objet <code>details</code> qui contient des informations à propos de la requête. Il inclut un ID de requête, fourni afin de permettre à une extension de relier des évènements associés à une même requête. Il est unique à chaque session de navigation et à l'extension. Il reste le même tout au long d'une requête, même durant les redirections et les échanges d'authentifications.</p> - -<p>Pour utiliser l'API webRequest pour un hôte donné, une extension doit avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission API</a> "webRequest" et la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission hôte </a>pour cet hôte. Pour utiliser la fonction "blocking", l'extension doit également avoir la permission API "webRequestBlocking".</p> - -<p>Pour intercepter des ressources chargées par une page (comme des images, des scripts ou des feuilles de style), l'extension doit avoir la permission de l'hôte pour la ressource ainsi que pour la page principale demandant la ressource. Par exemple, si une page à "https://developer.mozilla.org" charge une image à partir de "https://mdn.mozillademos.org", alors une extension doit avoir les deux permissions d'hôte si elle doit intercepter la demande d'image.</p> - -<h2 id="Modifier_une_requête">Modifier une requête</h2> - -<p>Sur certains de ces événements, vous pouvez modifier la demande. Plus précisément, vous pouvez :</p> - -<ul> - <li>Annuler une requête avec: - <ul> - <li>{{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}</li> - <li>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</li> - <li>{{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}</li> - </ul> - </li> - <li>Rediriger une requête avec: - <ul> - <li>{{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}</li> - <li>{{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}</li> - </ul> - </li> - <li>Modifier des en-têtes de requêtes avec: - <ul> - <li>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</li> - </ul> - </li> - <li>Modifier des réponses d'en-têtes avec: - <ul> - <li>{{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}</li> - </ul> - </li> - <li>Fournir des informations d'authentifications avec: - <ul> - <li>{{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}</li> - </ul> - </li> -</ul> - -<p>Pour ce faire, vous devez transmettre une option avec la valeur "blocking" dans l'argument <code>extraInfoSpec</code> à la fonction <code>addListener()</code> de l'événement. Cela rend l'auditeur synchrone. Dans l'écouteur, vous pouvez alors renvoyer un objet {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}}, qui indique la modification à apporter : par exemple, l'en-tête de requête modifié que vous souhaitez envoyer.</p> - -<div class="warning"> -<p><strong>Attention :</strong> Les protocoles non-HTTP(S) ne supportent pas actuellement la fonctionnalité de "<code>blockage</code>", donc la modification de ces requêtes n'est pas disponible pour le moment. Voir {{bug(1475832)}} pour plus de détails.</p> -</div> - -<h2 id="Accéder_aux_informations_de_sécurité">Accéder aux informations de sécurité</h2> - -<p>Dans l'écouteur {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}} vous pouvez accéder aux propriétés <a href="/fr/docs/Glossaire/TLS">TLS</a> d'une requête en appelant {{WebExtAPIRef("webRequest.getSecurityInfo()", "getSecurityInfo()")}}. Pour ce faire, vous devez également transmettre le "blockage" dans l'argument <code>extraInfoSpec</code> à la fonction <code>addListener()</code> de l'évènement.</p> - -<p>Vous pouvez lire les détails de la prise de contact TLS, mais vous ne pouvez pas les modifier ou remplacer les décisions de confiance du navigateur.</p> - -<h2 id="Modifier_les_réponses">Modifier les réponses</h2> - -<p>Pour modifier les corps de réponse HTTP pour une requête, appelez {{WebExtAPIRef("webRequest.filterResponseData")}}, en lui transmettant l'ID de la requête. Cela renvoie un objet {{WebExtAPIRef("webRequest.StreamFilter")}} que vous pouvez utiliser pour examiner et modifier les données reçues par le navigateur.</p> - -<p>Pour ce faire, vous devez disposer de la permission de l'API "webRequestBlocking" ainsi que la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "webRequest" et la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission de l'hôte </a>pour l'hôte concerné.</p> - -<h2 id="Types">Types</h2> - -<dl> - <dt>{{WebExtAPIRef("webRequest.BlockingResponse")}}</dt> - <dd> - <p>Un objet de ce type est renvoyé par les auditeurs d'événements qui ont défini le <code>"blockage"</code> dans leur argument <code>extraInfoSpec</code>. En définissant des propriétés particulières dans <code>BlockingResponse</code>, the listener can modify network requests.</p> - </dd> - <dt>{{WebExtAPIRef("webRequest.CertificateInfo")}}</dt> - <dd>Un objet décrivant un seul certificat X.509.</dd> - <dt>{{WebExtAPIRef("webRequest.HttpHeaders")}}</dt> - <dd>Un tableau d'en-têtes HTTP. Chaque en-tête est représenté comme un objet avec deux propriétés : <code>name</code> et <code>valeur</code> ou <code>binaryValue</code>.</dd> - <dt>{{WebExtAPIRef("webRequest.RequestFilter")}}</dt> - <dd>Un objet décrivant les filtres à appliquer aux événements webRequest.</dd> - <dt>{{WebExtAPIRef("webRequest.ResourceType")}}</dt> - <dd>Représente un type particulier de ressources récupérées dans une requête Web.</dd> - <dt>{{WebExtAPIRef("webRequest.SecurityInfo")}}</dt> - <dd>Un objet décrivant les propriétés de sécurité d'une requête Web particulière.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter")}}</dt> - <dd>Un objet qui peut être utilisé pour surveiller et modifier les réponses HTTP pendant leur réception.</dd> - <dt>{{WebExtAPIRef("webRequest.UploadData")}}</dt> - <dd>Contient des données téléchargées dans une requête URL.</dd> -</dl> - -<h2 id="Propriétés">Propriétés</h2> - -<dl> - <dt>{{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES", "webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}}</dt> - <dd>Le nombre de fois que <a href="/fr/Add-ons/WebExtensions/API/WebRequest/handlerBehaviorChanged"><code>handlerBehaviorChanged()</code></a> peut être appelé dans une période de 10 minutes.</dd> -</dl> - -<h2 id="Méthodes">Méthodes</h2> - -<dl> - <dt>{{WebExtAPIRef("webRequest.handlerBehaviorChanged()")}}</dt> - <dd>Cette fonction peut être utilisée pour s'assurer que les écouteurs d'événements sont appliqués correctement lorsque les pages se trouvent dans le cache en mémoire du navigateur.</dd> - <dt>{{WebExtAPIRef("webRequest.filterResponseData()")}}</dt> - <dd>Retourne un objet {{WebExtAPIRef("webRequest.StreamFilter")}} pour une requête donnée.</dd> - <dt>{{WebExtAPIRef("webRequest.getSecurityInfo()")}}</dt> - <dd>Obtient des informations détaillées sur la connexion <a href="/fr/docs/Glossaire/TLS">TLS</a> associée à une requête donnée.</dd> -</dl> - -<h2 id="Evénements">Evénements</h2> - -<dl> - <dt>{{WebExtAPIRef("webRequest.onBeforeRequest")}}</dt> - <dd>Lancé lorsqu'une demande est sur le point d'être faite, et avant que les en-têtes ne soient disponibles. C'est un bon endroit pour écouter si vous voulez annuler ou rediriger la demande.</dd> - <dt>{{WebExtAPIRef("webRequest.onBeforeSendHeaders")}}</dt> - <dd>Câblé avant d'envoyer des données HTTP, mais après que les en-têtes HTTP soient disponibles. C'est un bon endroit pour écouter si vous voulez modifier les en-têtes de requête HTTP.</dd> - <dt>{{WebExtAPIRef("webRequest.onSendHeaders")}}</dt> - <dd>Lancé juste avant l'envoi des en-têtes. Si votre add-on ou d'autres en-têtes modifiés dans <code>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</code>, vous verrez la version modifiée ici.</dd> - <dt>{{WebExtAPIRef("webRequest.onHeadersReceived")}}</dt> - <dd>Lancé lorsque les en-têtes de réponse HTTP associés à une requête ont été reçus. Vous pouvez utiliser cet événement pour modifier les en-têtes de réponse HTTP.</dd> - <dt>{{WebExtAPIRef("webRequest.onAuthRequired")}}</dt> - <dd>Déclenché lorsque le serveur demande au client de fournir des informations d'authentification. L'auditeur ne peut rien faire, annuler la demande ou fournir des informations d'authentification.</dd> - <dt>{{WebExtAPIRef("webRequest.onResponseStarted")}}</dt> - <dd>Lancé lorsque le premier octet du corps de réponse est reçu. Pour les requêtes HTTP, cela signifie que la ligne d'état et les en-têtes de réponse sont disponibles.</dd> - <dt>{{WebExtAPIRef("webRequest.onBeforeRedirect")}}</dt> - <dd>Déclenché lorsqu'une redirection initiée par le serveur est sur le point de se produirer.</dd> - <dt>{{WebExtAPIRef("webRequest.onCompleted")}}</dt> - <dd>C'est déclenché lorsqu'une demande est complétée.</dd> - <dt>{{WebExtAPIRef("webRequest.onErrorOccurred")}}</dt> - <dd>Déclenché lorsqu'une erreur se produit.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest")}}</p> - -<p><a href="/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities#webRequest_incompatibilities">Extra notes on Chrome incompatibilities</a>.</p> - -<p>{{WebExtExamples("h2")}}</p> - -<div class="note"><p><strong>Note :</strong></p> - -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> - -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> - -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +{{AddonSidebar}} + +Ajout d'écouteurs d'événements pour les différentes étapes d'une requête HTTP. L'écouteur de l'événement reçoit des informations détaillées sur la demande et peut modifier ou annuler la demande. + +Chaque événement est déclenché à un stade particulier de la demande. La séquence typique des événements est la suivante : + +![](webRequest-flow.png) + +{{WebExtAPIRef("webRequest.onErrorOccurred", "onErrorOccurred")}} peut être tiré à tout moment pendant la requête. Notez également que parfois la séquence des événements peut différer de ceci : par exemple, dans Firefox, lors d'une mise à niveau [HSTS](/fr/docs/Sécurité/HTTP_Strict_Transport_Security), l'événement `onBeforeRedirect` sera déclenché immédiatement après `onBeforeRequest`. + +Tous les évènements (excepté `onErrorOccurred`) peuvent prendre trois arguments pour `addListener()`: + +- Le receveur d'évènements lui-même +- un {{WebExtAPIRef("webRequest.RequestFilter", "filter")}} objet, afin de n'être notifié que pour les requêtes effectués par des URLs particulières ou pour un type particulier de ressources. +- un `extraInfoSpec` objet optionnel. Vous pouvez utiliser celui-ci pour passer des instructions spécifiques à l'évènement supplémentaires. + +Une fonction d'écoute reçoit un objet `details` qui contient des informations à propos de la requête. Il inclut un ID de requête, fourni afin de permettre à une extension de relier des évènements associés à une même requête. Il est unique à chaque session de navigation et à l'extension. Il reste le même tout au long d'une requête, même durant les redirections et les échanges d'authentifications. + +Pour utiliser l'API webRequest pour un hôte donné, une extension doit avoir la [permission API](/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) "webRequest" et la [permission hôte ](/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions)pour cet hôte. Pour utiliser la fonction "blocking", l'extension doit également avoir la permission API "webRequestBlocking". + +Pour intercepter des ressources chargées par une page (comme des images, des scripts ou des feuilles de style), l'extension doit avoir la permission de l'hôte pour la ressource ainsi que pour la page principale demandant la ressource. Par exemple, si une page à "https\://developer.mozilla.org" charge une image à partir de "https\://mdn.mozillademos.org", alors une extension doit avoir les deux permissions d'hôte si elle doit intercepter la demande d'image. + +## Modifier une requête + +Sur certains de ces événements, vous pouvez modifier la demande. Plus précisément, vous pouvez : + +- Annuler une requête avec: + + - {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} + - {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} + - {{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}} + +- Rediriger une requête avec: + + - {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} + - {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}} + +- Modifier des en-têtes de requêtes avec: + + - {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} + +- Modifier des réponses d'en-têtes avec: + + - {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}} + +- Fournir des informations d'authentifications avec: + + - {{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}} + +Pour ce faire, vous devez transmettre une option avec la valeur "blocking" dans l'argument `extraInfoSpec` à la fonction `addListener()` de l'événement. Cela rend l'auditeur synchrone. Dans l'écouteur, vous pouvez alors renvoyer un objet {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}}, qui indique la modification à apporter : par exemple, l'en-tête de requête modifié que vous souhaitez envoyer. + +> **Attention :** Les protocoles non-HTTP(S) ne supportent pas actuellement la fonctionnalité de "`blockage`", donc la modification de ces requêtes n'est pas disponible pour le moment. Voir {{bug(1475832)}} pour plus de détails. + +## Accéder aux informations de sécurité + +Dans l'écouteur {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}} vous pouvez accéder aux propriétés [TLS](/fr/docs/Glossaire/TLS) d'une requête en appelant {{WebExtAPIRef("webRequest.getSecurityInfo()", "getSecurityInfo()")}}. Pour ce faire, vous devez également transmettre le "blockage" dans l'argument `extraInfoSpec` à la fonction `addListener()` de l'évènement. + +Vous pouvez lire les détails de la prise de contact TLS, mais vous ne pouvez pas les modifier ou remplacer les décisions de confiance du navigateur. + +## Modifier les réponses + +Pour modifier les corps de réponse HTTP pour une requête, appelez {{WebExtAPIRef("webRequest.filterResponseData")}}, en lui transmettant l'ID de la requête. Cela renvoie un objet {{WebExtAPIRef("webRequest.StreamFilter")}} que vous pouvez utiliser pour examiner et modifier les données reçues par le navigateur. + +Pour ce faire, vous devez disposer de la permission de l'API "webRequestBlocking" ainsi que la [permission de l'API](/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) "webRequest" et la [permission de l'hôte ](/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions)pour l'hôte concerné. + +## Types + +- {{WebExtAPIRef("webRequest.BlockingResponse")}} + - : Un objet de ce type est renvoyé par les auditeurs d'événements qui ont défini le `"blockage"` dans leur argument `extraInfoSpec`. En définissant des propriétés particulières dans `BlockingResponse`, the listener can modify network requests. +- {{WebExtAPIRef("webRequest.CertificateInfo")}} + - : Un objet décrivant un seul certificat X.509. +- {{WebExtAPIRef("webRequest.HttpHeaders")}} + - : Un tableau d'en-têtes HTTP. Chaque en-tête est représenté comme un objet avec deux propriétés : `name` et `valeur` ou `binaryValue`. +- {{WebExtAPIRef("webRequest.RequestFilter")}} + - : Un objet décrivant les filtres à appliquer aux événements webRequest. +- {{WebExtAPIRef("webRequest.ResourceType")}} + - : Représente un type particulier de ressources récupérées dans une requête Web. +- {{WebExtAPIRef("webRequest.SecurityInfo")}} + - : Un objet décrivant les propriétés de sécurité d'une requête Web particulière. +- {{WebExtAPIRef("webRequest.StreamFilter")}} + - : Un objet qui peut être utilisé pour surveiller et modifier les réponses HTTP pendant leur réception. +- {{WebExtAPIRef("webRequest.UploadData")}} + - : Contient des données téléchargées dans une requête URL. + +## Propriétés + +- {{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES", "webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}} + - : Le nombre de fois que [`handlerBehaviorChanged()`](/fr/Add-ons/WebExtensions/API/WebRequest/handlerBehaviorChanged) peut être appelé dans une période de 10 minutes. + +## Méthodes + +- {{WebExtAPIRef("webRequest.handlerBehaviorChanged()")}} + - : Cette fonction peut être utilisée pour s'assurer que les écouteurs d'événements sont appliqués correctement lorsque les pages se trouvent dans le cache en mémoire du navigateur. +- {{WebExtAPIRef("webRequest.filterResponseData()")}} + - : Retourne un objet {{WebExtAPIRef("webRequest.StreamFilter")}} pour une requête donnée. +- {{WebExtAPIRef("webRequest.getSecurityInfo()")}} + - : Obtient des informations détaillées sur la connexion [TLS](/fr/docs/Glossaire/TLS) associée à une requête donnée. + +## Evénements + +- {{WebExtAPIRef("webRequest.onBeforeRequest")}} + - : Lancé lorsqu'une demande est sur le point d'être faite, et avant que les en-têtes ne soient disponibles. C'est un bon endroit pour écouter si vous voulez annuler ou rediriger la demande. +- {{WebExtAPIRef("webRequest.onBeforeSendHeaders")}} + - : Câblé avant d'envoyer des données HTTP, mais après que les en-têtes HTTP soient disponibles. C'est un bon endroit pour écouter si vous voulez modifier les en-têtes de requête HTTP. +- {{WebExtAPIRef("webRequest.onSendHeaders")}} + - : Lancé juste avant l'envoi des en-têtes. Si votre add-on ou d'autres en-têtes modifiés dans `{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}`, vous verrez la version modifiée ici. +- {{WebExtAPIRef("webRequest.onHeadersReceived")}} + - : Lancé lorsque les en-têtes de réponse HTTP associés à une requête ont été reçus. Vous pouvez utiliser cet événement pour modifier les en-têtes de réponse HTTP. +- {{WebExtAPIRef("webRequest.onAuthRequired")}} + - : Déclenché lorsque le serveur demande au client de fournir des informations d'authentification. L'auditeur ne peut rien faire, annuler la demande ou fournir des informations d'authentification. +- {{WebExtAPIRef("webRequest.onResponseStarted")}} + - : Lancé lorsque le premier octet du corps de réponse est reçu. Pour les requêtes HTTP, cela signifie que la ligne d'état et les en-têtes de réponse sont disponibles. +- {{WebExtAPIRef("webRequest.onBeforeRedirect")}} + - : Déclenché lorsqu'une redirection initiée par le serveur est sur le point de se produirer. +- {{WebExtAPIRef("webRequest.onCompleted")}} + - : C'est déclenché lorsqu'une demande est complétée. +- {{WebExtAPIRef("webRequest.onErrorOccurred")}} + - : Déclenché lorsqu'une erreur se produit. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest")}} + +[Extra notes on Chrome incompatibilities](/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities#webRequest_incompatibilities). + +{{WebExtExamples("h2")}} + +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. + +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -196,5 +172,4 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/max_handler_behavior_changed_calls_per_10_minutes/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/max_handler_behavior_changed_calls_per_10_minutes/index.md index 97022ec8f4..9d00d01cd5 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/max_handler_behavior_changed_calls_per_10_minutes/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/max_handler_behavior_changed_calls_per_10_minutes/index.md @@ -15,27 +15,25 @@ tags: translation_of: >- Mozilla/Add-ons/WebExtensions/API/webRequest/MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES --- -<p>{{AddonSidebar}}</p> +{{AddonSidebar}} -<p>Le nombre maximum de fois que <code>{{WebExtAPIRef("webRequest.handlerBehaviorChanged", "handlerBehaviorChanged()")}}</code> peut être appelé dans une période de 10 minutes.</p> +Le nombre maximum de fois que `{{WebExtAPIRef("webRequest.handlerBehaviorChanged", "handlerBehaviorChanged()")}}` peut être appelé dans une période de 10 minutes. -<p>Cette propriété est en lecture seule.</p> +Cette propriété est en lecture seule. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}}</p> +{{Compat("webextensions.api.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}} -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} -<div class="note"><p><strong>Note :</strong></p> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> - -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> - -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -62,5 +60,4 @@ translation_of: >- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onauthrequired/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onauthrequired/index.md index 28ed6d02c6..afadf2b721 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onauthrequired/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onauthrequired/index.md @@ -13,184 +13,167 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onAuthRequired --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Mise en place quand le serveur envoie un code status 401 ou 407 : c'est-à-dire lorsque le serveur demande au client de fournir des informations d'authentification telles qu'un nom d'utilisateur et un mot de passe.</p> +Mise en place quand le serveur envoie un code status 401 ou 407 : c'est-à-dire lorsque le serveur demande au client de fournir des informations d'authentification telles qu'un nom d'utilisateur et un mot de passe. -<p>L'auditeur peut répondre de l'une des quatre façons suivantes :</p> +L'auditeur peut répondre de l'une des quatre façons suivantes : -<p><strong>Ne rien faire </strong>: l'auditeur ne peut rien faire, il suffit d'observer la demande. Si cela se produit, cela n'aura aucun effet sur le traitement de la demande, et le navigateur demandera probablement simplement à l'utilisateur de se connecter.</p> +**Ne rien faire** : l'auditeur ne peut rien faire, il suffit d'observer la demande. Si cela se produit, cela n'aura aucun effet sur le traitement de la demande, et le navigateur demandera probablement simplement à l'utilisateur de se connecter. -<p><strong>Annuler la demande </strong>: l'auditeur peut annuler la demande. S'ils le font, l'authentification échouera et l'utilisateur ne sera pas invité à se connecter. Les prolongations peuvent annuler les demandes comme suit :</p> +**Annuler la demande** : l'auditeur peut annuler la demande. S'ils le font, l'authentification échouera et l'utilisateur ne sera pas invité à se connecter. Les prolongations peuvent annuler les demandes comme suit : -<ul> - <li>dans addListener, passez <code>"blocking"</code> dans le paramètre <code>extraInfoSpec </code></li> - <li>dans l'écouteur lui-même, retourne un objet avec une propriété <code>cancel</code> définie à <code>true</code></li> -</ul> +- dans addListener, passez `"blocking"` dans le paramètre `extraInfoSpec` +- dans l'écouteur lui-même, retourne un objet avec une propriété `cancel` définie à `true` -<p><strong>Fournir des informations d'identification de manière synchrone </strong>: si les informations d'identification sont disponibles de manière synchrone, l'extension peut les fournir de manière synchrone. Si l'extension fait cela, le navigateur tentera de se connecter avec les informations d'identification données.<br> - L'auditeur peut fournir des informations d'identification de manière synchrone comme suit :</p> +**Fournir des informations d'identification de manière synchrone** : si les informations d'identification sont disponibles de manière synchrone, l'extension peut les fournir de manière synchrone. Si l'extension fait cela, le navigateur tentera de se connecter avec les informations d'identification données. +L'auditeur peut fournir des informations d'identification de manière synchrone comme suit : -<ul> - <li>dans addListener, passez <code>"blocking"</code> dans le paramètre <code>extraInfoSpec</code></li> - <li>dans l'auditeur, retourner un objet avec une propriété <code>authCredentials</code> définie sur les informations d'identification à fournir</li> -</ul> +- dans addListener, passez `"blocking"` dans le paramètre `extraInfoSpec` +- dans l'auditeur, retourner un objet avec une propriété `authCredentials` définie sur les informations d'identification à fournir -<p><strong>Fournir les informations d'identification de manière asynchrone </strong>: l'extension peut avoir besoin de récupérer les informations d'identification de manière asynchrone. Par exemple, l'extension peut avoir besoin d'extraire les informations d'identification du stockage ou de demander à l'utilisateur. Dans ce cas, l'auditeur peut fournir des informations d'identification de manière asynchrone comme suit :</p> +**Fournir les informations d'identification de manière asynchrone** : l'extension peut avoir besoin de récupérer les informations d'identification de manière asynchrone. Par exemple, l'extension peut avoir besoin d'extraire les informations d'identification du stockage ou de demander à l'utilisateur. Dans ce cas, l'auditeur peut fournir des informations d'identification de manière asynchrone comme suit : -<ul> - <li>dans addListener, passez <code>"blocking"</code> dans le paramère <code>extraInfoSpec</code></li> - <li>dans l'auditeur, retourner une <code>Promise</code> qui est résolue avec un objet contenant une propriété <code>authCredentials</code>, définie sur les credentials à fournir.</li> -</ul> +- dans addListener, passez `"blocking"` dans le paramère `extraInfoSpec` +- dans l'auditeur, retourner une `Promise` qui est résolue avec un objet contenant une propriété `authCredentials`, définie sur les credentials à fournir. -<p>Voir <a href="/fr/Add-ons/WebExtensions/API/webRequest/onAuthRequired#Examples">Exemples</a>.</p> +Voir [Exemples](/fr/Add-ons/WebExtensions/API/webRequest/onAuthRequired#Examples). -<p>Si vous utilisez le <code>"blockage"</code> vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API "webRequestBlocking"</a> dans votre manifest.json.</p> +Si vous utilisez le `"blockage"` vous devez avoir la [permission de l'API "webRequestBlocking"](/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) dans votre manifest.json. -<p>Si votre poste fournit de mauvaises informations d'identification, l'auditeur sera rappelé. Pour cette raison, veillez à ne pas entrer dans une boucle infinie en fournissant à plusieurs reprises de mauvaises informations d'identification.</p> +Si votre poste fournit de mauvaises informations d'identification, l'auditeur sera rappelé. Pour cette raison, veillez à ne pas entrer dans une boucle infinie en fournissant à plusieurs reprises de mauvaises informations d'identification. -<h2 id="Autorisation_de_proxy">Autorisation de proxy</h2> +## Autorisation de proxy -<p>En général, Firefox ne déclenche pas d'événements <code>webRequest</code> pour les requêtes système, telles que les mises à jour de navigateur ou d'extension, ou les requêtes des moteurs de recherche. Pour permettre à l'autorisation de proxy de fonctionner sans problème pour les requêtes système, à partir de la version 57 Firefox implémente une exception à cette règle.</p> +En général, Firefox ne déclenche pas d'événements `webRequest` pour les requêtes système, telles que les mises à jour de navigateur ou d'extension, ou les requêtes des moteurs de recherche. Pour permettre à l'autorisation de proxy de fonctionner sans problème pour les requêtes système, à partir de la version 57 Firefox implémente une exception à cette règle. -<p>Si une extension a les permissions "webRequest", "webRequestBlocking", "proxy", et "<all_urls>", alors elle pourra utiliser <code>onAuthRequired</code> pour fournir des informations d'identification pour l'autorisation de proxy (mais pas pour l'autorisation web normale). L'auditeur ne sera pas en mesure d'annuler les demandes du système ou d'apporter d'autres modifications aux demandes du système.</p> +Si une extension a les permissions "webRequest", "webRequestBlocking", "proxy", et "\<all_urls>", alors elle pourra utiliser `onAuthRequired` pour fournir des informations d'identification pour l'autorisation de proxy (mais pas pour l'autorisation web normale). L'auditeur ne sera pas en mesure d'annuler les demandes du système ou d'apporter d'autres modifications aux demandes du système. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">browser.webRequest.onAuthRequired.addListener( +```js +browser.webRequest.onAuthRequired.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onAuthRequired.removeListener(listener) browser.webRequest.onAuthRequired.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajoute un écouteur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>écouteur</code> est enregistré à cet événement. Retourne <code>true</code> s'il est à l'écoute, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd><p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">détails</a></code> ci-dessous.</dd> - </dl> - - <p>Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}} ou une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> - - <ul> - <li>Pour traiter la requête de manière synchrone, inclure<code>"blocking"</code> dans le paramètre <code>extraInfoSpec</code> et retourner un objet <code>BlockingResponse</code>, avec son <code>cancel</code> ou ses propriétés <code>authCredentials</code>.</li> - <li>Pour traiter la requête de manière asynchrone, inclure <code>"blocking"</code> dans le paramètre <code>extraInfoSpec</code> et retourner une <code>Promise</code> qui est résolue avec un objet <code>BlockingResponse</code>, avec son <code>cancel</code> ou ses propriétés <code>authCredentials</code>.</li> - </ul> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> - <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> - <dd><p><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes :</p> - <ul> - <li><code>"blocking"</code>: faire le blocage de la demande, afin que vous puissiez annuler la demande ou fournir des informations d'authentification.</li> - <li><code>"</code><code>responseHeaders</code><code>"</code>: inclure <code>responseHeaders</code> dans l'objet <code>details</code> transmis à l'auditeur</li> - </ul> - </dd> -</dl> - -<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>challenger</code></dt> - <dd><p><code>object</code>. Le serveur demandant l'authentification. C'est un objet avec les propriétés suivantes :</p> - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le <a href="https://en.wikipedia.org/wiki/Hostname#Internet_hostnames">nom d'hôte</a> du serveur.<br> - <strong>Warning</strong>: Contrairement à chrome, Firefox retournera l'hôte demandé au lieu du proxy demandant l'authentification, même si <code>isProxy</code> est <code>true</code>.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur.</dd> - </dl> - </dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>isProxy</code></dt> - <dd><code>boolean</code>. <code>true</code> pour Proxy-Authenticate, <code>false</code> pour WWW-Authenticate. <strong>Note</strong>: <code>webRequest.onAuthRequired</code> n'est appelé que pour les serveurs proxy HTTP et HTTPS/SSL nécessitant une authentification, et non pour les serveurs proxy SOCKS nécessitant une authentification.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion ne parvient pas à connecter le serveur proxy après ce nombre de secondes, le serveur proxy suivant dans le tableau renvoyé par <a href="/fr/docs/Add-ons/WebExtensions/API/proxy#FindProxyForURL()_return_value">FindProxyForURL()</a> sera utilisé.</dd> - </dl> - </dd> - <dt><code>realm</code>{{optional_inline}}</dt> - <dd><code>string</code>. La zone d'authentification <a href="https://tools.ietf.org/html/rfc1945#section-11">realm</a> fournie par le serveur, s'il y en a un.</dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>responseHeaders</code>{{optional_inline}}</dt> - <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> - <dt><code>scheme</code></dt> - <dd><code>string</code>. Le schéma d'authentification : <code>"basic"</code> ou <code>"digest</code>".</dd> - <dt><code>statusCode</code></dt> - <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> - <dt><code>statusLine</code></dt> - <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onAuthRequired", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<p>Ce code n'observe que les demandes d'authentification pour l'URL cible :</p> - -<pre class="brush: js">var target = "https://intranet.company.com/"; +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajoute un écouteur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument `listener` est l'écouteur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `écouteur` est enregistré à cet événement. Retourne `true` s'il est à l'écoute, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Détails sur la demande. Voir les [`détails`](#details) ci-dessous. + + Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}} ou une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise). + + - Pour traiter la requête de manière synchrone, inclure`"blocking"` dans le paramètre `extraInfoSpec` et retourner un objet `BlockingResponse`, avec son `cancel` ou ses propriétés `authCredentials`. + - Pour traiter la requête de manière asynchrone, inclure `"blocking"` dans le paramètre `extraInfoSpec` et retourner une `Promise` qui est résolue avec un objet `BlockingResponse`, avec son `cancel` ou ses propriétés `authCredentials`. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur. +- `extraInfoSpec`{{optional_inline}} + + - : `array` de `string`. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes : + + - `"blocking"`: faire le blocage de la demande, afin que vous puissiez annuler la demande ou fournir des informations d'authentification. + - ` "``responseHeaders``" `: inclure `responseHeaders` dans l'objet `details` transmis à l'auditeur + +## Objets supplémentaires + +### détails + +- `challenger` + + - : `object`. Le serveur demandant l'authentification. C'est un objet avec les propriétés suivantes : + + - `host` + - : `string`. Le [nom d'hôte](https://en.wikipedia.org/wiki/Hostname#Internet_hostnames) du serveur. + **Warning**: Contrairement à chrome, Firefox retournera l'hôte demandé au lieu du proxy demandant l'authentification, même si `isProxy` est `true`. + - `port` + - : `integer`. Le numéro de port du serveur. + +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `isProxy` + - : `boolean`. `true` pour Proxy-Authenticate, `false` pour WWW-Authenticate. **Note**: `webRequest.onAuthRequired` n'est appelé que pour les serveurs proxy HTTP et HTTPS/SSL nécessitant une authentification, et non pour les serveurs proxy SOCKS nécessitant une authentification. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion ne parvient pas à connecter le serveur proxy après ce nombre de secondes, le serveur proxy suivant dans le tableau renvoyé par [FindProxyForURL()](</fr/docs/Add-ons/WebExtensions/API/proxy#FindProxyForURL()_return_value>) sera utilisé. + +- `realm`{{optional_inline}} + - : `string`. La zone d'authentification [realm](https://tools.ietf.org/html/rfc1945#section-11) fournie par le serveur, s'il y en a un. +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `responseHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse. +- `scheme` + - : `string`. Le schéma d'authentification : `"basic"` ou `"digest`". +- `statusCode` + - : `integer`. Code d'état HTTP standard renvoyé par le serveur. +- `statusLine` + - : `string`. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onAuthRequired", 10)}} + +## Exemples + +Ce code n'observe que les demandes d'authentification pour l'URL cible : + +```js +var target = "https://intranet.company.com/"; function observe(requestDetails) { console.log("observing: " + requestDetails.requestId); @@ -199,11 +182,13 @@ function observe(requestDetails) { browser.webRequest.onAuthRequired.addListener( observe, {urls: [target]} -);</pre> +); +``` -<p>Ce code annule les demandes d'authentification pour l'URL cible :</p> +Ce code annule les demandes d'authentification pour l'URL cible : -<pre class="brush: js">var target = "https://intranet.company.com/"; +```js +var target = "https://intranet.company.com/"; function cancel(requestDetails) { console.log("canceling: " + requestDetails.requestId); @@ -214,11 +199,13 @@ browser.webRequest.onAuthRequired.addListener( cancel, {urls: [target]}, ["blocking"] -);</pre> +); +``` -<p>Ce code fournit les informations d'identification de manière synchrone. Il doit garder une trace des demandes en suspens, pour s'assurer qu'il n'essaie pas à plusieurs reprises de soumettre de mauvaises références :</p> +Ce code fournit les informations d'identification de manière synchrone. Il doit garder une trace des demandes en suspens, pour s'assurer qu'il n'essaie pas à plusieurs reprises de soumettre de mauvaises références : -<pre class="brush: js">var target = "https://intranet.company.com/"; +```js +var target = "https://intranet.company.com/"; var myCredentials = { username: "me@company.com", @@ -232,7 +219,7 @@ var pendingRequests = []; function completed(requestDetails) { console.log("completed: " + requestDetails.requestId); var index = pendingRequests.indexOf(requestDetails.requestId); - if (index > -1) { + if (index > -1) { pendingRequests.splice(index, 1); } } @@ -263,11 +250,13 @@ browser.webRequest.onCompleted.addListener( browser.webRequest.onErrorOccurred.addListener( completed, {urls: [target]} -);</pre> +); +``` -<p>Ce code fournit les informations d'identification de manière asynchrone, en les récupérant à partir du stockage. Il doit également assurer le suivi des demandes en suspens, afin de s'assurer qu'il n'essaie pas à plusieurs reprises de soumettre de mauvaises références :</p> +Ce code fournit les informations d'identification de manière asynchrone, en les récupérant à partir du stockage. Il doit également assurer le suivi des demandes en suspens, afin de s'assurer qu'il n'essaie pas à plusieurs reprises de soumettre de mauvaises références : -<pre class="brush: js">var target = "https://httpbin.org/basic-auth/*"; +```js +var target = "https://httpbin.org/basic-auth/*"; var pendingRequests = []; @@ -277,7 +266,7 @@ A request has completed. We can stop worrying about it. function completed(requestDetails) { console.log("completed: " + requestDetails.requestId); var index = pendingRequests.indexOf(requestDetails.requestId); - if (index > -1) { + if (index > -1) { pendingRequests.splice(index, 1); } } @@ -314,19 +303,17 @@ browser.webRequest.onErrorOccurred.addListener( completed, {urls: [target]} ); -</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -353,5 +340,4 @@ browser.webRequest.onErrorOccurred.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforeredirect/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforeredirect/index.md index db3c1dc5f7..c4d0f75101 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforeredirect/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforeredirect/index.md @@ -13,140 +13,127 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRedirect --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Déclenché lorsqu'une redirection initiée par le serveur est sur le point de se produire.</p> +Déclenché lorsqu'une redirection initiée par le serveur est sur le point de se produire. -<p>Notez que vous ne pouvez pas passer le <code>"blockage"</code> pour cet événement, donc vous ne pouvez pas modifier ou annuler la demande de cet événement : c'est uniquement à titre d'information.</p> +Notez que vous ne pouvez pas passer le `"blockage"` pour cet événement, donc vous ne pouvez pas modifier ou annuler la demande de cet événement : c'est uniquement à titre d'information. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">browser.webRequest.onBeforeRedirect.addListener( +```js +browser.webRequest.onBeforeRedirect.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onBeforeRedirect.removeListener(listener) browser.webRequest.onBeforeRedirect.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajouter un auditeur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd> - <p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">détails</a></code> ci-dessous.</dd> - </dl> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> - <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> - <dd><p><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur :</p> - <ul> - <li><code>"</code><code>responseHeaders</code><code>"</code>: inclure <code>responseHeaders</code> dans l'objet <code>détails</code> transmis à l'auditeur.</li> - </ul> - </dd> -</dl> - -<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>documentUrl</code></dt> - <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>fromCache</code></dt> - <dd><code>boolean</code>. Indique si cette réponse a été récupérée dans le cache du disque.</dd> - <dt><code>ip</code>{{optional_inline}}</dt> - <dd><code>string</code>. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>originUrl</code></dt> - <dd> - <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> - - <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> - - - </dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> - </dl> - </dd> - <dt><code>redirectUrl</code></dt> - <dd><code>string</code>. La nouvelle URL.</dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>responseHeaders</code>{{optional_inline}}</dt> - <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> - <dt><code>statusCode</code></dt> - <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> - <dt><code>statusLine</code></dt> - <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onBeforeRedirect", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<pre class="brush: js">var target = "https://developer.mozilla.org/*"; +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajouter un auditeur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument `listener` est l'auditeur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `listener` est enregistré à cet événement. Retourne `true` s'il est écouté, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Détails sur la demande. Voir les [`détails`](#details) ci-dessous. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur. +- `extraInfoSpec`{{optional_inline}} + + - : `array` de `string`. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur : + + - ` "``responseHeaders``" `: inclure `responseHeaders` dans l'objet `détails` transmis à l'auditeur. + +## Objets supplémentaires + +### détails + +- `documentUrl` + - : `string`. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https\://example.com" contient une image ou un iframe, alors le `documentUrl` pour l'image ou l'iframe sera "https\://example.com". Pour un document de niveau supérieur, `documentUrl` n'est pas défini. +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `fromCache` + - : `boolean`. Indique si cette réponse a été récupérée dans le cache du disque. +- `ip`{{optional_inline}} + - : `string`. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `originUrl` + + - : `string`. URL de la ressource qui a déclenché la requête. Par exemple, si "https\://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors `originUrl` de la requête résultante est "https\://example.com". + + L'`originUrl` est souvent mais pas toujours la même chose que `documentUrl`.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le `documentUrl` pour la requête résultante sera le document parent de l'iframe, mais l'`originUrl` sera l'URL du document dans l'iframe qui contenait le lien. + +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période. + +- `redirectUrl` + - : `string`. La nouvelle URL. +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `responseHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse. +- `statusCode` + - : `integer`. Code d'état HTTP standard renvoyé par le serveur. +- `statusLine` + - : `string`. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onBeforeRedirect", 10)}} + +## Exemples + +```js +var target = "https://developer.mozilla.org/*"; /* e.g. @@ -162,19 +149,17 @@ browser.webRequest.onBeforeRedirect.addListener( logResponse, {urls: [target]} ); -</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -201,5 +186,4 @@ browser.webRequest.onBeforeRedirect.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforerequest/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforerequest/index.md index 199b8d49d0..1fe48946a1 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforerequest/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforerequest/index.md @@ -13,177 +13,172 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Cet événement est déclenché lorsqu'une demande est sur le point d'être faite et avant que les en-têtes ne soient disponibles. C'est un bon endroit pour écouter si vous voulez annuler ou rediriger la demande.</p> +Cet événement est déclenché lorsqu'une demande est sur le point d'être faite et avant que les en-têtes ne soient disponibles. C'est un bon endroit pour écouter si vous voulez annuler ou rediriger la demande. -<p>Pour annuler ou rediriger la requête, incluez d'abord <code>"blocking"</code> dans l'argument tableau <code>extraInfoSpec</code> pour <code>addListener()</code>. Ensuite, dans la fonction Listener, retournez un objet {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}}, en définissant la propriété appropriée :</p> +Pour annuler ou rediriger la requête, incluez d'abord `"blocking"` dans l'argument tableau `extraInfoSpec` pour `addListener()`. Ensuite, dans la fonction Listener, retournez un objet {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}}, en définissant la propriété appropriée : -<ul> - <li>pour annuler la demande, inclure une propriété <code>cancel</code> avec la valeur <code>true</code>.</li> - <li>pour rediriger la requête, inclure une propriété <code>redirectUrl</code> avec la valeur fixée à l'URL vers laquelle vous voulez rediriger.</li> -</ul> +- pour annuler la demande, inclure une propriété `cancel` avec la valeur `true`. +- pour rediriger la requête, inclure une propriété `redirectUrl` avec la valeur fixée à l'URL vers laquelle vous voulez rediriger. -<p>Si une extension veut rediriger une URL publique (par exemple HTTPS) ver une <a href="/fr/Add-ons/WebExtensions/user_interface/Extension_pages">page d'extension</a>, de l'extension doit contenir une clé <a href="/fr/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a> qui liste l'URL de la page d'extension.</p> +Si une extension veut rediriger une URL publique (par exemple HTTPS) ver une [page d'extension](/fr/Add-ons/WebExtensions/user_interface/Extension_pages), de l'extension doit contenir une clé [web_accessible_resources](/fr/Add-ons/WebExtensions/manifest.json/web_accessible_resources) qui liste l'URL de la page d'extension. -<p>Lorsque plusieurs gestionnaires de blocage modifient une requête, une seule série de modifications prend effet. Les redirections et les annulations ont la même priorité. Ainsi, si vous avez annulé une requête, vous pouvez voir une autre requête avec la même <code>requestId</code> à nouveau si un autre gestionnaire de blocage a redirigé la requête.</p> +Lorsque plusieurs gestionnaires de blocage modifient une requête, une seule série de modifications prend effet. Les redirections et les annulations ont la même priorité. Ainsi, si vous avez annulé une requête, vous pouvez voir une autre requête avec la même `requestId` à nouveau si un autre gestionnaire de blocage a redirigé la requête. -<p>A partir de Firefox 52, au lieu de renvoyer <code>BlockingResponse</code>, l'auditeur peut renvoyer une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec un <code>BlockingResponse</code>. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.</p> +A partir de Firefox 52, au lieu de renvoyer `BlockingResponse`, l'auditeur peut renvoyer une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui est résolue avec un `BlockingResponse`. Ceci permet à l'auditeur de traiter la demande de manière asynchrone. -<p>Si vous utilisez le <code>"blocking"</code>, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API "webRequestBlocking"</a> dans votre manifest.json.</p> +Si vous utilisez le `"blocking"`, vous devez avoir la [permission de l'API "webRequestBlocking"](/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) dans votre manifest.json. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">browser.webRequest.onBeforeRequest.addListener( +```js +browser.webRequest.onBeforeRequest.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onBeforeRequest.removeListener(listener) browser.webRequest.onBeforeRequest.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajoute un auditeur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument de l'<code>écouteur</code> est l'écouteur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>l'écouteur</code> est inscrit à cet événement. Renvoie <code>true</code> s'il est à l'écoute, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd><p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">details</a></code> ci-dessous.</dd> - </dl> - <p>Les retours : {{WebExtAPIRef('webRequest.BlockingResponse')}}. Si <code>"blocking"</code>est spécifié dans le paramètre <code>extraInfoSpec</code>, l'auditeur d'événement doit retourner un objet <code>BlockingResponse</code>, et peut définir soit son <code>annulation</code>, soit ses propriétés <code>redirectUrl</code>. A partir de Firefox 52, au lieu de renvoyer <code>BlockingResponse</code>,l'auditeur peut renvoyer une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec un <code>BlockingResponse</code>. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.</p> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> - <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> - <dd><p><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes :</p> - <ul> - <li><code>"blocking"</code>: rendre la requête synchrone, de sorte que vous pouvez annuler ou rediriger la requête</li> - <li><code>"requestBody"</code>: include <code>requestBody</code> dans l'objet <code>details</code> transmis à l'auditeur</li> - </ul> - </dd> -</dl> - -<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>documentUrl</code></dt> - <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> - <dt><code>frameAncestors</code></dt> - <dd><p><code>array</code>. Contient des informations pour chaque document dans la hiérarchie des cadres jusqu'au document de niveau supérieur. Le premier élément du tableau contient des informations sur le parent immédiat du document demandé, et le dernier élément contient des informations sur le document de niveau supérieur. Si la charge est réellement pour le document de niveau supérieur, alors ce tableau est vide.</p> - <dl> - <dt><code>url</code></dt> - <dd><code>string</code>. URL à partir de laquelle le document a été chargé.</dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Le <code>frameId</code> du document. <code>details.frameAncestors[0].frameId</code> est le même que <code>details.parentFrameId</code>.</dd> - </dl> - </dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>originUrl</code></dt> - <dd> - <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> - - <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> - </dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> - </dl> - </dd> - <dt><code>requestBody</code>{{optional_inline}}</dt> - <dd><p><code>object</code>. Contient les données du corps de la requête HTTP. Seulement si <code>extraInfoSpec</code> contient <code>"requestBody"</code>.</p> - <dl> - <dt><code>error</code>{{optional_inline}}</dt> - <dd><code>string</code>. Ce paramètre est défini si des erreurs ont été rencontrées lors de l'obtention des données du corps de la demande.</dd> - <dt><code>formData</code>{{optional_inline}}</dt> - <dd><p><code>object</code>. Cet objet est présent si la méthode de requête est POST et que le corps est une séquence de paires clé-valeur codées en UTF-8 sous la forme "multipart/form-data" ou "application/x-www-form-urlencoded".</p> - <p>Il s'agit d'un dictionnaire dans lequel chaque clé contient la liste de toutes les valeurs de cette clé. Par exemple: <code>{'key': ['value1', 'value2']}</code>. Si les données sont d'un autre type de support, ou si elles sont malformées, l'objet n'est pas présent.</p></dd> - <dt><code>raw</code>{{optional_inline}}</dt> - <dd><code>array</code> of <code>{{WebExtAPIRef('webRequest.UploadData')}}</code>. Si la méthode de requête est PUT ou POST, et que le corps n'est pas déjà analysé dans <code>formData</code>, alors ce tableau contient les éléments de corps de requête non analysés.</dd> - </dl> - </dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onBeforeRequest", 10)}}</p> - -<h3 id="Ordre_de_résolution_DNS_lorsque_BlockingResponse_est_utilisé">Ordre de résolution DNS lorsque BlockingResponse est utilisé</h3> - -<p>En ce qui concerne la résolution DNS lorsque BlockingResponse est utilisé avec OnBeforeRequest : Dans le canal HTTP, avec réponse de blocage se produit avant la résolution DNS et avant la connexion spéculative. Pour les autres canaux, une connexion spéculative peut provoquer des requêtes DNS avant onBeforeRequest. Cet ordre n'est pas quelque chose sur quoi un développeur d'extension devrait se fier, car il peut varier d'un navigateur à l'autre, et encore moins d'une version de navigateur à l'autre, et encore moins d'un canal de requête à l'autre. Référez-vous <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1466099">à la clarification du problème de BugZilla fournie par les développeurs Mozilla sur la commande de la résolution DNS</a></p> - -<h2 id="Exemples">Exemples</h2> - -<p>Ce code enregistre l'URL de chaque ressource demandée qui correspond au modèle <a href="/fr/Add-ons/WebExtensions/Match_patterns#<all_urls>"><all_urls></a> :</p> - -<pre class="brush: js">function logURL(requestDetails) { +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajoute un auditeur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument de l'`écouteur` est l'écouteur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `l'écouteur` est inscrit à cet événement. Renvoie `true` s'il est à l'écoute, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Détails sur la demande. Voir les [`details`](#details) ci-dessous. + + Les retours : {{WebExtAPIRef('webRequest.BlockingResponse')}}. Si `"blocking"`est spécifié dans le paramètre `extraInfoSpec`, l'auditeur d'événement doit retourner un objet `BlockingResponse`, et peut définir soit son `annulation`, soit ses propriétés `redirectUrl`. A partir de Firefox 52, au lieu de renvoyer `BlockingResponse`,l'auditeur peut renvoyer une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui est résolue avec un `BlockingResponse`. Ceci permet à l'auditeur de traiter la demande de manière asynchrone. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur. +- `extraInfoSpec`{{optional_inline}} + + - : `array` de `string`. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes : + + - `"blocking"`: rendre la requête synchrone, de sorte que vous pouvez annuler ou rediriger la requête + - `"requestBody"`: include `requestBody` dans l'objet `details` transmis à l'auditeur + +## Objets supplémentaires + +### détails + +- `documentUrl` + - : `string`. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https\://example.com" contient une image ou un iframe, alors le `documentUrl` pour l'image ou l'iframe sera "https\://example.com". Pour un document de niveau supérieur, `documentUrl` n'est pas défini. +- `frameAncestors` + + - : `array`. Contient des informations pour chaque document dans la hiérarchie des cadres jusqu'au document de niveau supérieur. Le premier élément du tableau contient des informations sur le parent immédiat du document demandé, et le dernier élément contient des informations sur le document de niveau supérieur. Si la charge est réellement pour le document de niveau supérieur, alors ce tableau est vide. + + - `url` + - : `string`. URL à partir de laquelle le document a été chargé. + - `frameId` + - : `integer`. Le `frameId` du document. `details.frameAncestors[0].frameId` est le même que `details.parentFrameId`. + +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `originUrl` + + - : `string`. URL de la ressource qui a déclenché la requête. Par exemple, si "https\://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors `originUrl` de la requête résultante est "https\://example.com". + + L'`originUrl` est souvent mais pas toujours la même chose que `documentUrl`.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le `documentUrl` pour la requête résultante sera le document parent de l'iframe, mais l'`originUrl` sera l'URL du document dans l'iframe qui contenait le lien. + +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période. + +- `requestBody`{{optional_inline}} + + - : `object`. Contient les données du corps de la requête HTTP. Seulement si `extraInfoSpec` contient `"requestBody"`. + + - `error`{{optional_inline}} + - : `string`. Ce paramètre est défini si des erreurs ont été rencontrées lors de l'obtention des données du corps de la demande. + - `formData`{{optional_inline}} + + - : `object`. Cet objet est présent si la méthode de requête est POST et que le corps est une séquence de paires clé-valeur codées en UTF-8 sous la forme "multipart/form-data" ou "application/x-www-form-urlencoded". + + Il s'agit d'un dictionnaire dans lequel chaque clé contient la liste de toutes les valeurs de cette clé. Par exemple: `{'key': ['value1', 'value2']}`. Si les données sont d'un autre type de support, ou si elles sont malformées, l'objet n'est pas présent. + + - `raw`{{optional_inline}} + - : `array` of `{{WebExtAPIRef('webRequest.UploadData')}}`. Si la méthode de requête est PUT ou POST, et que le corps n'est pas déjà analysé dans `formData`, alors ce tableau contient les éléments de corps de requête non analysés. + +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onBeforeRequest", 10)}} + +### Ordre de résolution DNS lorsque BlockingResponse est utilisé + +En ce qui concerne la résolution DNS lorsque BlockingResponse est utilisé avec OnBeforeRequest : Dans le canal HTTP, avec réponse de blocage se produit avant la résolution DNS et avant la connexion spéculative. Pour les autres canaux, une connexion spéculative peut provoquer des requêtes DNS avant onBeforeRequest. Cet ordre n'est pas quelque chose sur quoi un développeur d'extension devrait se fier, car il peut varier d'un navigateur à l'autre, et encore moins d'une version de navigateur à l'autre, et encore moins d'un canal de requête à l'autre. Référez-vous [à la clarification du problème de BugZilla fournie par les développeurs Mozilla sur la commande de la résolution DNS](https://bugzilla.mozilla.org/show_bug.cgi?id=1466099) + +## Exemples + +Ce code enregistre l'URL de chaque ressource demandée qui correspond au modèle [\<all_urls>](/fr/Add-ons/WebExtensions/Match_patterns#<all_urls>) : + +```js +function logURL(requestDetails) { console.log("Loading: " + requestDetails.url); } browser.webRequest.onBeforeRequest.addListener( logURL, - {urls: ["<all_urls>"]} -);</pre> + {urls: ["<all_urls>"]} +); +``` -<p>Ce code annule les demandes d'images qui sont faites aux URLs sous "https://mdn.mozillademos.org/" (pour voir l'effet, visitez n'importe quelle page de MDN qui contient des images, comme <a href="/fr/docs/Mozilla/Firefox/Developer_Edition">Firefox Developer Edition</a>):</p> +Ce code annule les demandes d'images qui sont faites aux URLs sous "https\://mdn.mozillademos.org/" (pour voir l'effet, visitez n'importe quelle page de MDN qui contient des images, comme [Firefox Developer Edition](/fr/docs/Mozilla/Firefox/Developer_Edition)): -<pre class="brush: js">// match pattern for the URLs to redirect +```js +// match pattern for the URLs to redirect var pattern = "https://mdn.mozillademos.org/*"; // cancel function returns an object @@ -200,11 +195,12 @@ browser.webRequest.onBeforeRequest.addListener( {urls: [pattern], types: ["image"]}, ["blocking"] ); -</pre> +``` -<p>Ce code remplace, par redirection, toutes les demandes de réseau pour des images qui sont faites à des URLs sous "https://mdn.mozillademos.org/" (pour voir l'effet, visitez n'importe quelle page de MDN qui contient des images, comme <a href="/fr/docs/Mozilla/Firefox/Developer_Edition">Firefox Developer Edition</a>) :</p> +Ce code remplace, par redirection, toutes les demandes de réseau pour des images qui sont faites à des URLs sous "https\://mdn.mozillademos.org/" (pour voir l'effet, visitez n'importe quelle page de MDN qui contient des images, comme [Firefox Developer Edition](/fr/docs/Mozilla/Firefox/Developer_Edition)) : -<pre class="brush: js">// match pattern for the URLs to redirect +```js +// match pattern for the URLs to redirect var pattern = "https://mdn.mozillademos.org/*"; // redirect function @@ -223,11 +219,13 @@ browser.webRequest.onBeforeRequest.addListener( redirect, {urls:[pattern], types:["image"]}, ["blocking"] -);</pre> +); +``` -<p>Ce code est exactement comme l'exemple précédent, sauf que l'auditeur traite la requête de manière asynchrone. Il renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui définit une minuterie et se résout avec l'URL de redirection lorsque la minuterie expire :</p> +Ce code est exactement comme l'exemple précédent, sauf que l'auditeur traite la requête de manière asynchrone. Il renvoie une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui définit une minuterie et se résout avec l'URL de redirection lorsque la minuterie expire : -<pre class="brush: js">// match pattern for the URLs to redirect +```js +// match pattern for the URLs to redirect var pattern = "https://mdn.mozillademos.org/*"; // URL we will redirect to @@ -237,8 +235,8 @@ var redirectUrl = "https://38.media.tumblr.com/tumblr_ldbj01lZiP1qe0eclo1_500.gi // which is resolved with the redirect URL when a timer expires function redirectAsync(requestDetails) { console.log("Redirecting async: " + requestDetails.url); - return new Promise((resolve, reject) => { - window.setTimeout(() => { + return new Promise((resolve, reject) => { + window.setTimeout(() => { resolve({redirectUrl}); }, 2000); }); @@ -250,19 +248,18 @@ browser.webRequest.onBeforeRequest.addListener( redirectAsync, {urls: [pattern], types: ["image"]}, ["blocking"] -);</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +); +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -289,5 +286,4 @@ browser.webRequest.onBeforeRequest.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforesendheaders/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforesendheaders/index.md index e5c2fc28b5..40b32f8165 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforesendheaders/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforesendheaders/index.md @@ -13,153 +13,144 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeSendHeaders --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Cet événement est déclenché avant l'envoi de données HTTP, mais après que tous les en-têtes HTTP soient disponibles. C'est un bon endroit pour écouter si vous voulez modifier les en-têtes de requête HTTP.</p> +Cet événement est déclenché avant l'envoi de données HTTP, mais après que tous les en-têtes HTTP soient disponibles. C'est un bon endroit pour écouter si vous voulez modifier les en-têtes de requête HTTP. -<p>Pour que les en-têtes de requête soient passés dans l'écouteur avec le reste des données de requête, passez <code>"requestHeaders"</code> dans un tableau <code>extraInfoSpec</code>.</p> +Pour que les en-têtes de requête soient passés dans l'écouteur avec le reste des données de requête, passez `"requestHeaders"` dans un tableau `extraInfoSpec`. -<p>Pour modifier les en-têtes de façon synchrone : passez <code>"blocking"</code> dans <code>extraInfoSpec</code>, puis dans votre événement écouté, retournez un <a href="/fr/Add-ons/WebExtensions/API/webRequest/BlockingResponse" title='An object of this type is returned by event listeners that have set "blocking" in their extraInfoSpec argument.'><code>BlockingResponse</code></a> avec une propriété nommée <code>requestHeaders</code>, dont la valeur est l'ensemble des en-têtes de requête à envoyer.</p> +Pour modifier les en-têtes de façon synchrone : passez `"blocking"` dans `extraInfoSpec`, puis dans votre événement écouté, retournez un [`BlockingResponse`](/fr/Add-ons/WebExtensions/API/webRequest/BlockingResponse 'An object of this type is returned by event listeners that have set "blocking" in their extraInfoSpec argument.') avec une propriété nommée `requestHeaders`, dont la valeur est l'ensemble des en-têtes de requête à envoyer. -<p>Pour modifier les en-têtes de façon asynchrone : passez <code>"blocking"</code> dans <code>extraInfoSpec</code>, puis dans votre event listener, retournez une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec une <code>BlockingResponse</code>.</p> +Pour modifier les en-têtes de façon asynchrone : passez `"blocking"` dans `extraInfoSpec`, puis dans votre event listener, retournez une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui est résolue avec une `BlockingResponse`. -<p>Si vous utilisez le <code>"blocking"</code>, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">"permission de l'API "webRequestBlocking"</a> dans votre manifest.json.</p> +Si vous utilisez le `"blocking"`, vous devez avoir la ["permission de l'API "webRequestBlocking"](/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions) dans votre manifest.json. -<p>Il est possible d'étendre le conflit ici. Si deux extensions écoutent <code>onBeforeSendHeaders</code> pour la même requête, le deuxième auditeur verra les modifications apportées par le premier auditeur et pourra annuler les modifications apportées par le premier auditeur. Par exemple, si le premier auditeur ajoute un en-tête <code>Cookie</code>, et que le deuxième auditeur supprime tous les en-têtes <code>Cookie</code>, les modifications apportées par le premier auditeur seront perdues. Si vous voulez voir les en-têtes qui sont effectivement envoyés, sans risque qu'une autre extension les modifie par la suite, utilisez {{WebExtAPIRef("webRequest.onSendHeaders", "onSendHeaders")}}, bien que vous ne puissiez pas modifier les en-têtes sur cet événement.</p> +Il est possible d'étendre le conflit ici. Si deux extensions écoutent `onBeforeSendHeaders` pour la même requête, le deuxième auditeur verra les modifications apportées par le premier auditeur et pourra annuler les modifications apportées par le premier auditeur. Par exemple, si le premier auditeur ajoute un en-tête `Cookie`, et que le deuxième auditeur supprime tous les en-têtes `Cookie`, les modifications apportées par le premier auditeur seront perdues. Si vous voulez voir les en-têtes qui sont effectivement envoyés, sans risque qu'une autre extension les modifie par la suite, utilisez {{WebExtAPIRef("webRequest.onSendHeaders", "onSendHeaders")}}, bien que vous ne puissiez pas modifier les en-têtes sur cet événement. -<p>Tous les en-têtes réellement envoyés ne sont pas toujours inclus dans <code>requestHeaders</code>. En particulier, les en-têtes liés à la mise en cache (par exemple, <code>Cache-Control</code>, <code>If-Modified-Since</code>, <code>If-None-Match</code>) ne sont jamais envoyés. De plus, le comportement peut différer d'un navigateur à l'autre.</p> +Tous les en-têtes réellement envoyés ne sont pas toujours inclus dans `requestHeaders`. En particulier, les en-têtes liés à la mise en cache (par exemple, `Cache-Control`, `If-Modified-Since`, `If-None-Match`) ne sont jamais envoyés. De plus, le comportement peut différer d'un navigateur à l'autre. -<p>Selon la spécification, les noms d'en-tête sont insensibles à la casse. Cela signifie que pour être sûr de faire correspondre un en-tête particulier, l'auditeur devrait minuscules le nom avant de le comparer :</p> +Selon la spécification, les noms d'en-tête sont insensibles à la casse. Cela signifie que pour être sûr de faire correspondre un en-tête particulier, l'auditeur devrait minuscules le nom avant de le comparer : -<pre class="brush: js">for (let header of e.requestHeaders) { +```js +for (let header of e.requestHeaders) { if (header.name.toLowerCase() === desiredHeader) { // process header } -}</pre> +} +``` -<p>Le navigateur conserve la casse originale du nom de l'en-tête tel qu'il a été généré par le navigateur. Si l'auditeur de l'extension change la casse, ce changement ne sera pas conservé.</p> +Le navigateur conserve la casse originale du nom de l'en-tête tel qu'il a été généré par le navigateur. Si l'auditeur de l'extension change la casse, ce changement ne sera pas conservé. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">browser.webRequest.onBeforeSendHeaders.addListener( +```js +browser.webRequest.onBeforeSendHeaders.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onBeforeSendHeaders.removeListener(listener) browser.webRequest.onBeforeSendHeaders.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajouter un auditeur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd> - <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Détails de la demande. Ceci inclura les en-têtes de demande si vous avez inclus <code>"requestHeaders"</code> dans <code>extraInfoSpec</code>.</dd> - </dl> - - <p>Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}}. si <code>"blocking"</code> est spécifié dans le paramètre <code>extraInfoSpec</code>, l'auditeur d'événement doit retourner un objet <code>BlockingResponse</code>, et peut définir sa propriété <code>requestHeaders</code>.</p> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur.</dd> - <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> - <dd><p><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes :</p> - <ul> - <li><code>"blocking"</code>: rendre la requête synchrone, ce qui vous permet de modifier les en-têtes de requête</li> - <li><code>"requestHeaders"</code>: inclure les en-têtes de requête dans l'objet <code>details</code> transmis à l'auditeur</li> - </ul> - </dd> -</dl> - -<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>documentUrl</code></dt> - <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>originUrl</code></dt> - <dd> - <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> - - <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> - </dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> - </dl> - </dd> - <dt><code>requestHeaders</code>{{optional_inline}}</dt> - <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onBeforeSendHeaders", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<p>Ce code modifie l'en-tête "User-Agent" pour que le navigateur s'identifie comme étant Opera 12.16, mais uniquement lors de la visite des pages sous "https://httpbin.org/".</p> - -<pre class="brush: js">"use strict"; +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajouter un auditeur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument `listener` est l'auditeur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `listener` est enregistré à cet événement. Retourne `true` s'il est écouté, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Détails de la demande. Ceci inclura les en-têtes de demande si vous avez inclus `"requestHeaders"` dans `extraInfoSpec`. + + Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}}. si `"blocking"` est spécifié dans le paramètre `extraInfoSpec`, l'auditeur d'événement doit retourner un objet `BlockingResponse`, et peut définir sa propriété `requestHeaders`. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur. +- `extraInfoSpec`{{optional_inline}} + + - : `array` de `string`. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes : + + - `"blocking"`: rendre la requête synchrone, ce qui vous permet de modifier les en-têtes de requête + - `"requestHeaders"`: inclure les en-têtes de requête dans l'objet `details` transmis à l'auditeur + +## Objets supplémentaires + +### détails + +- `documentUrl` + - : `string`. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https\://example.com" contient une image ou un iframe, alors le `documentUrl` pour l'image ou l'iframe sera "https\://example.com". Pour un document de niveau supérieur, `documentUrl` n'est pas défini. +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `originUrl` + + - : `string`. URL de la ressource qui a déclenché la requête. Par exemple, si "https\://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors `originUrl` de la requête résultante est "https\://example.com". + + L'`originUrl` est souvent mais pas toujours la même chose que `documentUrl`.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le `documentUrl` pour la requête résultante sera le document parent de l'iframe, mais l'`originUrl` sera l'URL du document dans l'iframe qui contenait le lien. + +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période. + +- `requestHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse. +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onBeforeSendHeaders", 10)}} + +## Exemples + +Ce code modifie l'en-tête "User-Agent" pour que le navigateur s'identifie comme étant Opera 12.16, mais uniquement lors de la visite des pages sous "https\://httpbin.org/". + +```js +"use strict"; /* This is the page for which we want to rewrite the User-Agent header. @@ -194,11 +185,12 @@ browser.webRequest.onBeforeSendHeaders.addListener( {urls: [targetPage]}, ["blocking", "requestHeaders"] ); -</pre> +``` -<p>Ce code est exactement comme l'exemple précédent, sauf que l'auditeur est asynchrone, retournant une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec les nouveaux en-têtes :</p> +Ce code est exactement comme l'exemple précédent, sauf que l'auditeur est asynchrone, retournant une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui est résolue avec les nouveaux en-têtes : -<pre class="brush: js">"use strict"; +```js +"use strict"; /* This is the page for which we want to rewrite the User-Agent header. @@ -214,8 +206,8 @@ var ua = "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12. Rewrite the User-Agent header to "ua". */ function rewriteUserAgentHeaderAsync(e) { - var asyncRewrite = new Promise((resolve, reject) => { - window.setTimeout(() => { + var asyncRewrite = new Promise((resolve, reject) => { + window.setTimeout(() => { for (var header of e.requestHeaders) { if (header.name.toLowerCase() === "user-agent") { header.value = ua; @@ -239,20 +231,17 @@ browser.webRequest.onBeforeSendHeaders.addListener( {urls: [targetPage]}, ["blocking", "requestHeaders"] ); +``` -</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> - -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -279,5 +268,4 @@ browser.webRequest.onBeforeSendHeaders.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/oncompleted/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/oncompleted/index.md index e83f60fed7..741667185e 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/oncompleted/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/oncompleted/index.md @@ -13,136 +13,125 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onCompleted --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Utilisé lorsqu'une demande est complétée.</p> +Utilisé lorsqu'une demande est complétée. -<p>Cet événement est à titre d'information seulement.</p> +Cet événement est à titre d'information seulement. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">browser.webRequest.onCompleted.addListener( +```js +browser.webRequest.onCompleted.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onCompleted.removeListener(listener) browser.webRequest.onCompleted.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajouter un auditeur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd> - <p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Details sur la demande. voir les <code><a href="#details">détails</a></code> ci-dessous.</dd> - </dl> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> - <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> - <dd><p><code>array</code> of <code>string</code>. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur :</p> - <ul> - <li><code>"</code><code>responseHeaders</code><code>"</code>: inclure <code>responseHeaders</code> dans l'objet <code>details</code> transmis à l'auditeur</li> - </ul> - </dd> -</dl> - -<h2 id="objets_supplémentaires">objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>documentUrl</code></dt> - <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>fromCache</code></dt> - <dd><code>boolean</code>. Indique si cette réponse a été récupérée dans le cache du disque.</dd> - <dt><code>ip</code>{{optional_inline}}</dt> - <dd><code>string</code>. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>originUrl</code></dt> - <dd> - <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> - - <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> - </dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> - </dl> - </dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>responseHeaders</code>{{optional_inline}}</dt> - <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> - <dt><code>statusCode</code></dt> - <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> - <dt><code>statusLine</code></dt> - <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onCompleted", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<pre class="brush: js">var target = "https://developer.mozilla.org/*"; +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajouter un auditeur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument `listener` est l'auditeur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `listener` est enregistré à cet événement. Retourne `true` s'il est écouté, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Details sur la demande. voir les [`détails`](#details) ci-dessous. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur. +- `extraInfoSpec`{{optional_inline}} + + - : `array` of `string`. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur : + + - ` "``responseHeaders``" `: inclure `responseHeaders` dans l'objet `details` transmis à l'auditeur + +## objets supplémentaires + +### détails + +- `documentUrl` + - : `string`. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https\://example.com" contient une image ou un iframe, alors le `documentUrl` pour l'image ou l'iframe sera "https\://example.com". Pour un document de niveau supérieur, `documentUrl` n'est pas défini. +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `fromCache` + - : `boolean`. Indique si cette réponse a été récupérée dans le cache du disque. +- `ip`{{optional_inline}} + - : `string`. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `originUrl` + + - : `string`. URL de la ressource qui a déclenché la requête. Par exemple, si "https\://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors `originUrl` de la requête résultante est "https\://example.com". + + L'`originUrl` est souvent mais pas toujours la même chose que `documentUrl`.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le `documentUrl` pour la requête résultante sera le document parent de l'iframe, mais l'`originUrl` sera l'URL du document dans l'iframe qui contenait le lien. + +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période. + +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `responseHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse. +- `statusCode` + - : `integer`. Code d'état HTTP standard renvoyé par le serveur. +- `statusLine` + - : `string`. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onCompleted", 10)}} + +## Exemples + +```js +var target = "https://developer.mozilla.org/*"; /* e.g. @@ -163,19 +152,17 @@ browser.webRequest.onCompleted.addListener( logResponse, {urls: [target]} ); -</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -202,5 +189,4 @@ browser.webRequest.onCompleted.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onerroroccurred/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onerroroccurred/index.md index 07a82c4a5e..c0fe196659 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onerroroccurred/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onerroroccurred/index.md @@ -13,129 +13,119 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onErrorOccurred --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Utilisé lorsqu'une demande n'a pas pu être traitée en raison d'une erreur : par exemple, un manque de connectivité Internet.</p> +Utilisé lorsqu'une demande n'a pas pu être traitée en raison d'une erreur : par exemple, un manque de connectivité Internet. -<p>L'erreur est transmise à l'auditeur en tant que propriété d'<code>erreur</code> de l'objet <code><a href="#details">details</a></code>.</p> +L'erreur est transmise à l'auditeur en tant que propriété d'`erreur` de l'objet [`details`](#details). -<p>Notez que cet événement n'est pas déclenché pour les erreurs HTTP (réponses 4XX ou 5XX) : celles-ci passent par les étapes normales d'une requête, en appelant n'importe quel auditeur d'événement et en définissant <code>details.statusCode</code> pour signaler l'erreur.</p> +Notez que cet événement n'est pas déclenché pour les erreurs HTTP (réponses 4XX ou 5XX) : celles-ci passent par les étapes normales d'une requête, en appelant n'importe quel auditeur d'événement et en définissant `details.statusCode` pour signaler l'erreur. -<p>Cet événement est à titre d'information seulement.</p> +Cet événement est à titre d'information seulement. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">browser.webRequest.onErrorOccurred.addListener( +```js +browser.webRequest.onErrorOccurred.addListener( listener, // function filter // object ) browser.webRequest.onErrorOccurred.removeListener(listener) browser.webRequest.onErrorOccurred.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajouter un auditeur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd> - <p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">details</a></code> ci-dessous.</dd> - </dl> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> -</dl> - -<h2 id="objets_supplémentaires">objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>documentUrl</code></dt> - <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> - <dt><code>error</code></dt> - <dd><code>string</code>. La description de l'erreur. Cette chaîne est une chaîne d'erreur interne, peut varier d'un navigateur à l'autre et n'est pas garantie de rester la même entre les versions.</dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>fromCache</code></dt> - <dd><code>boolean</code>. Indique si cette réponse a été récupérée dans le cache du disque.</dd> - <dt><code>ip</code>{{optional_inline}}</dt> - <dd><code>string</code>. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>originUrl</code></dt> - <dd> - <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> - - <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> - </dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> - </dl> - </dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onErrorOccurred", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<pre class="brush: js">var target = "<all_urls>"; +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajouter un auditeur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument `listener` est l'auditeur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `listener` est enregistré à cet événement. Retourne `true` s'il est écouté, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Détails sur la demande. Voir les [`details`](#details) ci-dessous. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur. + +## objets supplémentaires + +### détails + +- `documentUrl` + - : `string`. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https\://example.com" contient une image ou un iframe, alors le `documentUrl` pour l'image ou l'iframe sera "https\://example.com". Pour un document de niveau supérieur, `documentUrl` n'est pas défini. +- `error` + - : `string`. La description de l'erreur. Cette chaîne est une chaîne d'erreur interne, peut varier d'un navigateur à l'autre et n'est pas garantie de rester la même entre les versions. +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `fromCache` + - : `boolean`. Indique si cette réponse a été récupérée dans le cache du disque. +- `ip`{{optional_inline}} + - : `string`. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `originUrl` + + - : `string`. URL de la ressource qui a déclenché la requête. Par exemple, si "https\://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors `originUrl` de la requête résultante est "https\://example.com". + + L'`originUrl` est souvent mais pas toujours la même chose que `documentUrl`.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le `documentUrl` pour la requête résultante sera le document parent de l'iframe, mais l'`originUrl` sera l'URL du document dans l'iframe qui contenait le lien. + +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période. + +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onErrorOccurred", 10)}} + +## Exemples + +```js +var target = "<all_urls>"; /* e.g., with no network: @@ -151,19 +141,18 @@ function logError(responseDetails) { browser.webRequest.onErrorOccurred.addListener( logError, {urls: [target]} -);</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +); +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -190,5 +179,4 @@ browser.webRequest.onErrorOccurred.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onheadersreceived/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onheadersreceived/index.md index 9a67cebc8f..0088f750c2 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onheadersreceived/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onheadersreceived/index.md @@ -13,146 +13,136 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onHeadersReceived --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Lancé lorsque les en-têtes de réponse HTTP associés à une requête ont été reçus. Vous pouvez utiliser cet événement pour modifier les en-têtes de réponse HTTP.</p> +Lancé lorsque les en-têtes de réponse HTTP associés à une requête ont été reçus. Vous pouvez utiliser cet événement pour modifier les en-têtes de réponse HTTP. -<p>Pour que les en-têtes de réponse soient passés dans l'écouteur avec le reste des données de la requête, passez <code>"responseHeaders"</code> dans le tableau <code>extraInfoSpec</code>.</p> +Pour que les en-têtes de réponse soient passés dans l'écouteur avec le reste des données de la requête, passez `"responseHeaders"` dans le tableau `extraInfoSpec`. -<p>Pour modifier les en-têtes, passez <code>"blocking"</code> dans <code>extraInfoSpec</code>. Ensuite, dans votre écouteur d'événements, retournez un objet avec une propriété nommée <code>responseHeaders</code>, dont la valeur est l'ensemble des en-têtes de réponse à utiliser. Le navigateur se comportera comme si le serveur avait envoyé les en-têtes modifiées.</p> +Pour modifier les en-têtes, passez `"blocking"` dans `extraInfoSpec`. Ensuite, dans votre écouteur d'événements, retournez un objet avec une propriété nommée `responseHeaders`, dont la valeur est l'ensemble des en-têtes de réponse à utiliser. Le navigateur se comportera comme si le serveur avait envoyé les en-têtes modifiées. -<p>A partir de Firefox 52, au lieu de renvoyer <code>BlockingResponse</code>, l'auditeur peut renvoyer une Promesse qui est résolue avec un <code>BlockingResponse</code>. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.</p> +A partir de Firefox 52, au lieu de renvoyer `BlockingResponse`, l'auditeur peut renvoyer une Promesse qui est résolue avec un `BlockingResponse`. Ceci permet à l'auditeur de traiter la demande de manière asynchrone. -<p>Si vous utilisez le <code>"blocking"</code>, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API "webRequestBlocking" </a>dans votre manifest.json.</p> +Si vous utilisez le `"blocking"`, vous devez avoir la [permission de l'API "webRequestBlocking" ](/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions)dans votre manifest.json. -<p>Notez qu'il est possible que des extensions entrent en conflit ici. Si deux extensions écoutent <code>onHeadersReceived</code> pour la même requête et retournent <code>responseHeaders</code> essayant de définir le même en-tête (par exemple, <code>Content-Security-Policy</code>), seule une des modifications sera réussie. Si vous voulez voir les en-têtes qui sont effectivement traités par le système, sans risque qu'une autre extension les modifie par la suite, utilisez {{WebExtAPIRef("webRequest.onResponseStarted", "onResponseStarted", "onResponseStarted")}}, mais vous ne pouvez pas modifier les entêtes sur cet événement<br> - </p> +Notez qu'il est possible que des extensions entrent en conflit ici. Si deux extensions écoutent `onHeadersReceived` pour la même requête et retournent `responseHeaders` essayant de définir le même en-tête (par exemple, `Content-Security-Policy`), seule une des modifications sera réussie. Si vous voulez voir les en-têtes qui sont effectivement traités par le système, sans risque qu'une autre extension les modifie par la suite, utilisez {{WebExtAPIRef("webRequest.onResponseStarted", "onResponseStarted", "onResponseStarted")}}, mais vous ne pouvez pas modifier les entêtes sur cet événement -<h2 id="Syntaxe">Syntaxe</h2> -<pre class="brush: js">browser.webRequest.onHeadersReceived.addListener( + +## Syntaxe + +```js +browser.webRequest.onHeadersReceived.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onHeadersReceived.removeListener(listener) browser.webRequest.onHeadersReceived.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajouter un auditeur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd> - <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Détails de la demande. Ceci inclura les en-têtes de réponse si vous avez inclus <code>"responseHeaders"</code> dans <code>extraInfoSpec</code>.</dd> - </dl> - - <p>Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}}. Si <code>"blocking"</code> est spécifié dans le paramètre <code>extraInfoSpec</code>, l'auditeur d'événement doit retourner un objet <code>BlockingResponse</code>, et peut définir sa propriété <code>responseHeaders</code>.</p> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur.</dd> - <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> - <dd><p><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes :</p> - <ul> - <li><code>"blocking"</code> pour rendre la requête synchrone, de sorte que vous pouvez modifier les en-têtes de requête et réponse.</li> - <li><code>"responseHeaders"</code> pour inclure les en-têtes de réponse dans l'objet <code>détails</code> transmis à l'auditeur</li> - </ul> - </dd> -</dl> - -<h2 id="objets_supplémentaires">objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>documentUrl</code></dt> - <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>originUrl</code></dt> - <dd> - <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> - - <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> - </dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> - </dl> - </dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>responseHeaders</code>{{optional_inline}}</dt> - <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> - <dt><code>statusCode</code></dt> - <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> - <dt><code>statusLine</code></dt> - <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onHeadersReceived", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<p>Ce code définit un cookie supplémentaire lors de la demande d'une ressource à partir de l'URL cible :</p> - -<pre class="brush: js">var targetPage = "https://developer.mozilla.org/en-US/Firefox/Developer_Edition"; +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajouter un auditeur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument `listener` est l'auditeur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `listener` est enregistré à cet événement. Retourne `true` s'il est écouté, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Détails de la demande. Ceci inclura les en-têtes de réponse si vous avez inclus `"responseHeaders"` dans `extraInfoSpec`. + + Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}}. Si `"blocking"` est spécifié dans le paramètre `extraInfoSpec`, l'auditeur d'événement doit retourner un objet `BlockingResponse`, et peut définir sa propriété `responseHeaders`. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur. +- `extraInfoSpec`{{optional_inline}} + + - : `array` de `string`. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes : + + - `"blocking"` pour rendre la requête synchrone, de sorte que vous pouvez modifier les en-têtes de requête et réponse. + - `"responseHeaders"` pour inclure les en-têtes de réponse dans l'objet `détails` transmis à l'auditeur + +## objets supplémentaires + +### détails + +- `documentUrl` + - : `string`. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https\://example.com" contient une image ou un iframe, alors le `documentUrl` pour l'image ou l'iframe sera "https\://example.com". Pour un document de niveau supérieur, `documentUrl` n'est pas défini. +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `originUrl` + + - : `string`. URL de la ressource qui a déclenché la requête. Par exemple, si "https\://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors `originUrl` de la requête résultante est "https\://example.com". + + L'`originUrl` est souvent mais pas toujours la même chose que `documentUrl`.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le `documentUrl` pour la requête résultante sera le document parent de l'iframe, mais l'`originUrl` sera l'URL du document dans l'iframe qui contenait le lien. + +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période. + +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `responseHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse. +- `statusCode` + - : `integer`. Code d'état HTTP standard renvoyé par le serveur. +- `statusLine` + - : `string`. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onHeadersReceived", 10)}} + +## Exemples + +Ce code définit un cookie supplémentaire lors de la demande d'une ressource à partir de l'URL cible : + +```js +var targetPage = "https://developer.mozilla.org/en-US/Firefox/Developer_Edition"; // Add the new header to the original array, // and return it. @@ -171,18 +161,20 @@ browser.webRequest.onHeadersReceived.addListener( setCookie, {urls: [targetPage]}, ["blocking", "responseHeaders"] -);</pre> +); +``` -<p>Ce code fait la même chose que l'exemple précédent, sauf que l'auditeur est asynchrone, retournant une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec les nouveaux en-têtes :</p> +Ce code fait la même chose que l'exemple précédent, sauf que l'auditeur est asynchrone, retournant une [`Promise`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise) qui est résolue avec les nouveaux en-têtes : -<pre class="brush: js">var targetPage = "https://developer.mozilla.org/en-US/Firefox/Developer_Edition"; +```js +var targetPage = "https://developer.mozilla.org/en-US/Firefox/Developer_Edition"; // Return a Promise that sets a timer. // When the timer fires, resolve the promise with // modified set of response headers. function setCookieAsync(e) { - var asyncSetCookie = new Promise((resolve, reject) => { - window.setTimeout(() => { + var asyncSetCookie = new Promise((resolve, reject) => { + window.setTimeout(() => { var setMyCookie = { name: "Set-Cookie", value: "my-cookie1=my-cookie-value1" @@ -202,19 +194,17 @@ browser.webRequest.onHeadersReceived.addListener( {urls: [targetPage]}, ["blocking", "responseHeaders"] ); -</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -241,5 +231,4 @@ browser.webRequest.onHeadersReceived.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onresponsestarted/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onresponsestarted/index.md index 60f8f4a5b2..e91113903f 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onresponsestarted/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onresponsestarted/index.md @@ -13,134 +13,125 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onResponseStarted --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Lancé lorsque le premier octet du corps de réponse est reçu.</p> +Lancé lorsque le premier octet du corps de réponse est reçu. -<p>Cet événement est à titre d'information seulement.</p> +Cet événement est à titre d'information seulement. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">browser.webRequest.onResponseStarted.addListener( +```js +browser.webRequest.onResponseStarted.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onResponseStarted.removeListener(listener) browser.webRequest.onResponseStarted.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajouter un auditeur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd><p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">details</a></code> ci-dessous.</dd> - </dl> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> - <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> - <dd><p><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur :</p> - <ul> - <li><code>"</code><code>responseHeaders</code><code>"</code>: inclure <code>responseHeaders</code> dans l'objet <code>détails</code> transmis à l'auditeur</li> - </ul> - </dd> -</dl> - -<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>documentUrl</code></dt> - <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>fromCache</code></dt> - <dd><code>boolean</code>. Indique si cette réponse a été récupérée dans le cache du disque.</dd> - <dt><code>ip</code>{{optional_inline}}</dt> - <dd><code>string</code>. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>originUrl</code></dt> - <dd> - <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> - - <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> - </dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> - </dl> - </dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>responseHeaders</code>{{optional_inline}}</dt> - <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> - <dt><code>statusCode</code></dt> - <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> - <dt><code>statusLine</code></dt> - <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onResponseStarted", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<pre class="brush: js">var target = "https://developer.mozilla.org/*"; +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajouter un auditeur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument `listener` est l'auditeur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `listener` est enregistré à cet événement. Retourne `true` s'il est écouté, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Détails sur la demande. Voir les [`details`](#details) ci-dessous. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur. +- `extraInfoSpec`{{optional_inline}} + + - : `array` de `string`. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur : + + - ` "``responseHeaders``" `: inclure `responseHeaders` dans l'objet `détails` transmis à l'auditeur + +## Objets supplémentaires + +### détails + +- `documentUrl` + - : `string`. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https\://example.com" contient une image ou un iframe, alors le `documentUrl` pour l'image ou l'iframe sera "https\://example.com". Pour un document de niveau supérieur, `documentUrl` n'est pas défini. +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `fromCache` + - : `boolean`. Indique si cette réponse a été récupérée dans le cache du disque. +- `ip`{{optional_inline}} + - : `string`. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `originUrl` + + - : `string`. URL de la ressource qui a déclenché la requête. Par exemple, si "https\://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors `originUrl` de la requête résultante est "https\://example.com". + + L'`originUrl` est souvent mais pas toujours la même chose que `documentUrl`.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le `documentUrl` pour la requête résultante sera le document parent de l'iframe, mais l'`originUrl` sera l'URL du document dans l'iframe qui contenait le lien. + +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période. + +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `responseHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse. +- `statusCode` + - : `integer`. Code d'état HTTP standard renvoyé par le serveur. +- `statusLine` + - : `string`. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onResponseStarted", 10)}} + +## Exemples + +```js +var target = "https://developer.mozilla.org/*"; /* e.g. @@ -157,19 +148,18 @@ function logResponse(responseDetails) { browser.webRequest.onResponseStarted.addListener( logResponse, {urls: [target]} -);</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +); +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -196,5 +186,4 @@ browser.webRequest.onResponseStarted.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onsendheaders/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onsendheaders/index.md index c091296420..5bb6919c56 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onsendheaders/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onsendheaders/index.md @@ -13,130 +13,119 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onSendHeaders --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Cet événement est déclenché juste avant l'envoi des en-têtes. Si votre extension ou une autre extension a modifié les en-têtes dans <code>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</code>, vous verrez la version modifiée ici.</p> +Cet événement est déclenché juste avant l'envoi des en-têtes. Si votre extension ou une autre extension a modifié les en-têtes dans `{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}`, vous verrez la version modifiée ici. -<p>Cet événement est à titre d'information seulement.</p> +Cet événement est à titre d'information seulement. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">browser.webRequest.onSendHeaders.addListener( +```js +browser.webRequest.onSendHeaders.addListener( listener, // function filter, // object extraInfoSpec // optional array of strings ) browser.webRequest.onSendHeaders.removeListener(listener) browser.webRequest.onSendHeaders.hasListener(listener) -</pre> - -<p>Les événements ont trois fonctions :</p> - -<dl> - <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> - <dd>Ajouter un auditeur à cet événement.</dd> - <dt><code>removeListener(listener)</code></dt> - <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> - <dt><code>hasListener(listener)</code></dt> - <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> -</dl> - -<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> - -<h3 id="Paramètres">Paramètres</h3> - -<dl> - <dt><code>callback</code></dt> - <dd> - <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> - - <dl> - <dt><code>details</code></dt> - <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">details</a></code> ci-dessous.</dd> - </dl> - </dd> - <dt><code>filter</code></dt> - <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> - <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> - <dd><p><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur ici :</p> - <ul> - <li><code>"requestHeaders"</code>: inclure les en-têtes de requête dans l'objet détails transmis à l'auditeur</li> - </ul> - </dd> -</dl> - -<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> - -<h3 id="détails">détails</h3> - -<dl> - <dt><code>documentUrl</code></dt> - <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> - <dt><code>frameId</code></dt> - <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> - <dt><code>method</code></dt> - <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> - <dt><code>originUrl</code></dt> - <dd> - <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> - - <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> - </dd> - <dt><code>parentFrameId</code></dt> - <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> - <dt><code>proxyInfo</code></dt> - <dd> - <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> - - <dl> - <dt><code>host</code></dt> - <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> - <dt><code>port</code></dt> - <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> - <dt><code>type</code></dt> - <dd> - <p><code>string</code>. Le type de serveur proxy. L'un des :</p> - - <ul> - <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> - <li>"https": proxy HTTP sur connexion TLS vers proxy</li> - <li>"socks": SOCKS v5 proxy</li> - <li>"socks4": SOCKS v4 proxy</li> - <li>"direct": pas de proxy</li> - <li>"unknown": proxy inconnu</li> - </ul> - </dd> - <dt><code>username</code></dt> - <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> - <dt><code>proxyDNS</code></dt> - <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> - <dt><code>failoverTimeout</code></dt> - <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> - </dl> - </dd> - <dt><code>requestId</code></dt> - <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> - <dt><code>requestHeaders</code>{{optional_inline}}</dt> - <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> - <dt><code>tabId</code></dt> - <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> - <dt><code>timeStamp</code></dt> - <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> - <dt><code>type</code></dt> - <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> - <dt><code>url</code></dt> - <dd><code>string</code>. Cible de la demande.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.onSendHeaders", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<p>Ce code enregistre tous les cookies qui seront envoyés en faisant des demandes au <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">modèle de match</a> cible :</p> - -<pre class="brush: js">// The target match pattern +``` + +Les événements ont trois fonctions : + +- `addListener(callback, filter, extraInfoSpec)` + - : Ajouter un auditeur à cet événement. +- `removeListener(listener)` + - : Arrêtez d'écouter cet événement. L'argument `listener` est l'auditeur à supprimer. +- `hasListener(listener)` + - : Vérifiez si `listener` est enregistré à cet événement. Retourne `true` s'il est écouté, sinon `false`. + +## Syntaxe addListener + +### Paramètres + +- `callback` + + - : Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants : + + - `details` + - : [`object`](#details). Détails sur la demande. Voir les [`details`](#details) ci-dessous. + +- `filter` + - : {{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur. +- `extraInfoSpec`{{optional_inline}} + + - : `array` de `string`. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur ici : + + - `"requestHeaders"`: inclure les en-têtes de requête dans l'objet détails transmis à l'auditeur + +## Objets supplémentaires + +### détails + +- `documentUrl` + - : `string`. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https\://example.com" contient une image ou un iframe, alors le `documentUrl` pour l'image ou l'iframe sera "https\://example.com". Pour un document de niveau supérieur, `documentUrl` n'est pas défini. +- `frameId` + - : `integer`. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (`type` is `main_frame` or `sub_frame`), `frameId` indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet. +- `method` + - : `string`. Méthode HTTP standard : par exemple, "GET" ou "POST". +- `originUrl` + + - : `string`. URL de la ressource qui a déclenché la requête. Par exemple, si "https\://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors `originUrl` de la requête résultante est "https\://example.com". + + L'`originUrl` est souvent mais pas toujours la même chose que `documentUrl`.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le `documentUrl` pour la requête résultante sera le document parent de l'iframe, mais l'`originUrl` sera l'URL du document dans l'iframe qui contenait le lien. + +- `parentFrameId` + - : `integer`. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent. +- `proxyInfo` + + - : `object`. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes : + + - `host` + - : `string`. Le nom d'hôte du serveur proxy. + - `port` + - : `integer`. Le numéro de port du serveur proxy. + - `type` + + - : `string`. Le type de serveur proxy. L'un des : + + - "http": proxy HTTP (ou SSL CONNECT pour HTTPS) + - "https": proxy HTTP sur connexion TLS vers proxy + - "socks": SOCKS v5 proxy + - "socks4": SOCKS v4 proxy + - "direct": pas de proxy + - "unknown": proxy inconnu + + - `username` + - : `string`. Nom d'utilisateur pour le service proxy. + - `proxyDNS` + - : `boolean`. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS. + - `failoverTimeout` + - : `integer`. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période. + +- `requestId` + - : `string`. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête. +- `requestHeaders`{{optional_inline}} + - : {{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse. +- `tabId` + - : `integer`. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet. +- `timeStamp` + - : `number`. L'heure à laquelle cet événement s'est déclenché, en [millisecondes depuis l'époque](https://en.wikipedia.org/wiki/Unix_time). +- `type` + - : {{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet". +- `url` + - : `string`. Cible de la demande. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.onSendHeaders", 10)}} + +## Exemples + +Ce code enregistre tous les cookies qui seront envoyés en faisant des demandes au [modèle de match](/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns) cible : + +```js +// The target match pattern var targetPage = "*://*.google.ca/*"; // Log cookies sent with this request @@ -154,19 +143,18 @@ browser.webRequest.onSendHeaders.addListener( logCookies, {urls: [targetPage]}, ["requestHeaders"] -);</pre> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> +); +``` -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +{{WebExtExamples}} -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -193,5 +181,4 @@ browser.webRequest.onSendHeaders.addListener( // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/requestfilter/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/requestfilter/index.md index 5136764a13..a8eb210a77 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/requestfilter/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/requestfilter/index.md @@ -13,42 +13,38 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/RequestFilter --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Un objet décrivant les filtres à appliquer aux événements webRequest.</p> +Un objet décrivant les filtres à appliquer aux événements webRequest. -<h2 id="Type">Type</h2> +## Type -<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> +Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes : -<dl> - <dt><code>urls</code></dt> - <dd><code>array</code> de <code><code>string</code></code>. Un tableau de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">motifs (Match patterns)</a>. L'auditeur ne sera appelé que pour les demandes dont les cibles correspondent à l'un des modèles donnés. Seules les requêtes faites en utilisant HTTP ou HTTPS déclencheront des événements, même si les modèles de correspondance peuvent correspondre à d'autres protocoles.</dd> - <dt><code>types</code>{{optional_inline}}</dt> - <dd><code>array</code> de <code>{{WebExtAPIRef('webRequest.ResourceType')}}</code>. Une liste des types de ressources (par exemple, feuilles de style, images, scripts). L'auditeur ne sera appelé que pour les demandes de ressources qui sont de l'un des types donnés.</dd> - <dt><code>tabId</code>{{optional_inline}}</dt> - <dd><code>integer</code>. L'auditeur ne sera appelé que pour les requêtes provenant du {{WebExtAPIRef("tabs.Tab", "tab")}} identifié par cet ID.</dd> - <dt><code>windowId</code>{{optional_inline}}</dt> - <dd><code>integer</code>. L'auditeur ne sera appelé que pour les requêtes provenant du {{WebExtAPIRef("windows.Window", "window")}} identifié par cet ID.</dd> - <dt>incognito {{optional_inline}}</dt> - <dd><code>boolean</code>. Si elles sont fournies, les demandes qui ne correspondent pas à l'état incognito (<code>true</code> ou <code>false</code>) seront filtrées.</dd> -</dl> +- `urls` + - : `array` de `string`. Un tableau de [motifs (Match patterns)](/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns). L'auditeur ne sera appelé que pour les demandes dont les cibles correspondent à l'un des modèles donnés. Seules les requêtes faites en utilisant HTTP ou HTTPS déclencheront des événements, même si les modèles de correspondance peuvent correspondre à d'autres protocoles. +- `types`{{optional_inline}} + - : `array` de `{{WebExtAPIRef('webRequest.ResourceType')}}`. Une liste des types de ressources (par exemple, feuilles de style, images, scripts). L'auditeur ne sera appelé que pour les demandes de ressources qui sont de l'un des types donnés. +- `tabId`{{optional_inline}} + - : `integer`. L'auditeur ne sera appelé que pour les requêtes provenant du {{WebExtAPIRef("tabs.Tab", "tab")}} identifié par cet ID. +- `windowId`{{optional_inline}} + - : `integer`. L'auditeur ne sera appelé que pour les requêtes provenant du {{WebExtAPIRef("windows.Window", "window")}} identifié par cet ID. +- incognito {{optional_inline}} + - : `boolean`. Si elles sont fournies, les demandes qui ne correspondent pas à l'état incognito (`true` ou `false`) seront filtrées. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.RequestFilter")}}</p> +{{Compat("webextensions.api.webRequest.RequestFilter")}} -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} -<div class="note"><p><strong>Note :</strong></p> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> - -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> - -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -75,5 +71,4 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/RequestFilter // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/resourcetype/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/resourcetype/index.md index f3d0726ba2..10a8dc8680 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/resourcetype/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/resourcetype/index.md @@ -13,81 +13,83 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType --- -<div>{{AddonSidebar()}}</div> - -<p>Ce type est une chaîne de caractères, qui représente le contexte dans lequel une ressource a été récupérée dans une requête web.</p> - -<p>Il est utilisé pour <a href="/fr/Add-ons/WebExtensions/API/WebRequest/RequestFilter">filtrer</a> les requêtes que vous écoutez en utilisant l'API webRequest. Par exemple : vous pouvez écouter les requêtes uniquement pour les images, ou uniquement pour les scripts.</p> - -<h2 id="Type">Type</h2> - -<p>Les valeurs de ce type sont des chaînes de caractères. Les valeurs possibles sont :</p> - -<dl> - <dt><code>beacon</code></dt> - <dd>Demandes envoyées par le biais de l'<a href="/fr/docs/Web/API/Beacon_API">API Beacon</a>.</dd> - <dt><code>csp_report</code></dt> - <dd>Demandes envoyées au {{CSP("report-uri")}} donné dans l'en-tête {{HTTPHeader("Content-Security-Policy")}}, lorsqu'une tentative de violation de la politique est détectée.</dd> - <dt><code>font</code></dt> - <dd>Polices Web chargées pour un {{cssxref("@font-face")}} règle CSS.</dd> - <dt><code>image</code></dt> - <dd>Les ressources chargées pour être rendues sous forme d'image, à l'exception de <code>imageset</code> sur les navigateurs qui prennent en charge ce type (voir la compatibilité des navigateurs ci-dessous).</dd> - <dt><code>imageset</code></dt> - <dd>Images chargées par un élément {{HTMLElement("picture")}} ou données dans un attribut {{htmlattrxref("srcset", "img")}} d'un élement <code><img></code>.</dd> -</dl> - -<dl> - <dt><code>main_frame</code></dt> - <dd>Documents de niveau chargés dans un objet.</dd> - <dt><code>media</code></dt> - <dd>Ressources chargées par un élément {{HTMLElement("video")}} ou {{HTMLElement("audio")}}.</dd> - <dt><code>object</code></dt> - <dd><p>Ressources chargées par un élément {{HTMLElement("object")}} ou {{HTMLElement("embed")}}.</p> - <p>Les navigateurs qui n'ont pas de type <code>object_subrequest</code> dédié (voir compatibilité des navigateurs ci-dessous), étiquettent également les requêtes ultérieures envoyées par le plugin en tant <code>object</code>.</p></dd> - <dt><code>object_subrequest</code></dt> - <dd>Requêtes envoyées par plugins.</dd> - <dt><code>ping</code></dt> - <dd><p>Demandes envoyées à l'URL donnée dans l'attribut {{htmlattrxref("ping", "a")}} d'un hyperlien, lorsque l'hyperlien est suivi.</p> - <p>Les navigateurs qui n'ont pas de type de <code>balise</code> dédié (voir la compatibilité des navigateurs ci-dessous), étiquettent également les requêtes envoyées par l'API Beacon en tant que <code>ping</code>.</p></dd> - <dt><code>script</code></dt> - <dd>Code chargé pour être exécuté par un élément {{HTMLElement("script")}} ou exécuté dans un <a href="/fr/docs/Web/API/Web_Workers_API">Worker</a>.</dd> - <dt><code>speculative</code></dt> - <dd>Dans une connexion spéculative, le navigateur a déterminé qu'une demande d'URI pourrait bientôt arriver, donc il lance immédiatement un handshake TCP et/ou TLS, de sorte qu'il est prêt plus rapidement lorsque la ressource est effectivement demandée.</dd> - <dt><code>stylesheet</code></dt> - <dd>Feuilles de style <a href="/fr/docs/Web/CSS">CSS</a> chargées pour décrire la représentation d'un document.</dd> - <dt><code>sub_frame</code></dt> - <dd>Documents chargés dans un élément {{HTMLElement("iframe")}} ou {{HTMLElement("frame")}}.</dd> - <dt><code>web_manifest</code></dt> - <dd><a href="/fr/docs/Web/Manifest">Manifests Web App</a> chargés pour les sites Web qui peuvent être installés sur l'écran d'accueil.</dd> - <dt><code>websocket</code></dt> - <dd>Requêtes initiant une connexion à un serveur via l'<a href="/fr/docs/WebSockets">API WebSocket</a>.</dd> - <dt><code>xbl</code></dt> - <dd><a href="/fr/docs/XBL">XBL</a> bindings chargés pour étendre le comportement des éléments d'un document.</dd> - <dt><code>xml_dtd</code></dt> - <dd><a href="/fr/docs/Glossaire/DTD">DTDs</a> chargées pour un document XML.</dd> - <dt><code>xmlhttprequest</code></dt> - <dd>Requêtes envoyées par un objet {{domxref("XMLHttpRequest")}} ou par l'<a href="/fr/docs/Web/API/Fetch_API">API Fetch</a>.</dd> - <dt><code>xslt</code></dt> - <dd>Feuilles de style <a href="/fr/docs/Web/XSLT">XSLT</a> chargées pour transformer un document XML</dd> - <dt><code>other</code></dt> - <dd>Ressources qui ne sont couvertes par aucun autre type disponible.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.ResourceType")}}</p> - -<p>{{WebExtExamples}}</p> - -<div class="note"><p><strong>Note :</strong></p> - -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> - -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> - -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +{{AddonSidebar()}} + +Ce type est une chaîne de caractères, qui représente le contexte dans lequel une ressource a été récupérée dans une requête web. + +Il est utilisé pour [filtrer](/fr/Add-ons/WebExtensions/API/WebRequest/RequestFilter) les requêtes que vous écoutez en utilisant l'API webRequest. Par exemple : vous pouvez écouter les requêtes uniquement pour les images, ou uniquement pour les scripts. + +## Type + +Les valeurs de ce type sont des chaînes de caractères. Les valeurs possibles sont : + +- `beacon` + - : Demandes envoyées par le biais de l'[API Beacon](/fr/docs/Web/API/Beacon_API). +- `csp_report` + - : Demandes envoyées au {{CSP("report-uri")}} donné dans l'en-tête {{HTTPHeader("Content-Security-Policy")}}, lorsqu'une tentative de violation de la politique est détectée. +- `font` + - : Polices Web chargées pour un {{cssxref("@font-face")}} règle CSS. +- `image` + - : Les ressources chargées pour être rendues sous forme d'image, à l'exception de `imageset` sur les navigateurs qui prennent en charge ce type (voir la compatibilité des navigateurs ci-dessous). +- `imageset` + - : Images chargées par un élément {{HTMLElement("picture")}} ou données dans un attribut {{htmlattrxref("srcset", "img")}} d'un élement `<img>`. + +<!----> + +- `main_frame` + - : Documents de niveau chargés dans un objet. +- `media` + - : Ressources chargées par un élément {{HTMLElement("video")}} ou {{HTMLElement("audio")}}. +- `object` + + - : Ressources chargées par un élément {{HTMLElement("object")}} ou {{HTMLElement("embed")}}. + + Les navigateurs qui n'ont pas de type `object_subrequest` dédié (voir compatibilité des navigateurs ci-dessous), étiquettent également les requêtes ultérieures envoyées par le plugin en tant `object`. + +- `object_subrequest` + - : Requêtes envoyées par plugins. +- `ping` + + - : Demandes envoyées à l'URL donnée dans l'attribut {{htmlattrxref("ping", "a")}} d'un hyperlien, lorsque l'hyperlien est suivi. + + Les navigateurs qui n'ont pas de type de `balise` dédié (voir la compatibilité des navigateurs ci-dessous), étiquettent également les requêtes envoyées par l'API Beacon en tant que `ping`. + +- `script` + - : Code chargé pour être exécuté par un élément {{HTMLElement("script")}} ou exécuté dans un [Worker](/fr/docs/Web/API/Web_Workers_API). +- `speculative` + - : Dans une connexion spéculative, le navigateur a déterminé qu'une demande d'URI pourrait bientôt arriver, donc il lance immédiatement un handshake TCP et/ou TLS, de sorte qu'il est prêt plus rapidement lorsque la ressource est effectivement demandée. +- `stylesheet` + - : Feuilles de style [CSS](/fr/docs/Web/CSS) chargées pour décrire la représentation d'un document. +- `sub_frame` + - : Documents chargés dans un élément {{HTMLElement("iframe")}} ou {{HTMLElement("frame")}}. +- `web_manifest` + - : [Manifests Web App](/fr/docs/Web/Manifest) chargés pour les sites Web qui peuvent être installés sur l'écran d'accueil. +- `websocket` + - : Requêtes initiant une connexion à un serveur via l'[API WebSocket](/fr/docs/WebSockets). +- `xbl` + - : [XBL](/fr/docs/XBL) bindings chargés pour étendre le comportement des éléments d'un document. +- `xml_dtd` + - : [DTDs](/fr/docs/Glossaire/DTD) chargées pour un document XML. +- `xmlhttprequest` + - : Requêtes envoyées par un objet {{domxref("XMLHttpRequest")}} ou par l'[API Fetch](/fr/docs/Web/API/Fetch_API). +- `xslt` + - : Feuilles de style [XSLT](/fr/docs/Web/XSLT) chargées pour transformer un document XML +- `other` + - : Ressources qui ne sont couvertes par aucun autre type disponible. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.ResourceType")}} + +{{WebExtExamples}} + +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. + +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -114,5 +116,4 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/securityinfo/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/securityinfo/index.md index 2c6ae1321c..3898a1d33f 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/securityinfo/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/securityinfo/index.md @@ -11,86 +11,81 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/SecurityInfo --- -<div>{{AddonSidebar()}}</div> - -<p>Objet décrivant les propriétés de sécurité d'une requête Web particulière. Un objet de ce type est retourné depuis l'API {{WebExtAPIRef("webRequest.getSecurityInfo()")}}.</p> - -<p>Si la requête n'est pas sécurisée par <a href="/fr/docs/Glossaire/TLS">TLS</a>, alors cet objet ne contiendra que l'état de la propriété <code>state</code>, dont la valeur sera <code>"insecure"</code>.</p> - -<h2 id="Type">Type</h2> - -<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> - -<dl> - <dt><code>certificates</code></dt> - <dd><p><code>Array</code> de {{WebExtAPIRef("webRequest.CertificateInfo", "CertificateInfo")}}. Si {{WebExtAPIRef("webRequest.getSecurityInfo()")}} a été appelé avec l'option <code>certificateChain</code> présente et définie sur <code>true</code>, cela contiendra un objet <code>CertificateInfo</code> pour chaque certificat de la chaîne, depuis le certificat du serveur jusqu'à et y compris la racine de confiance.</p> - <p>Sinon, il contiendra un seul objet <code>CertificateInfo</code>, pour le certificat du serveur.</p></dd> - <dt><code>certificateTransparencyStatus</code> {{optional_inline}}</dt> - <dd> - <p><code>String</code>. Indique l'état de la <a href="https://www.certificate-transparency.org/">transparence des certificats</a> pour la connexion. Ceci peut prendre l'une des valeurs suivantes :</p> - - <ul> - <li>"not_applicable"</li> - <li>"policy_compliant"</li> - <li>"policy_not_enough_scts"</li> - <li>"policy_not_diverse_scts"</li> - </ul> - </dd> - <dt><code>cipherSuite</code> {{optional_inline}}</dt> - <dd><code>String</code>. Suite de chiffrement utilisée pour la connexion, formatée selon la <a href="https://tools.ietf.org/html/rfc5246#appendix-A.5">specification TLS </a>: par exemple, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256".</dd> - <dt><code>errorMessage</code> {{optional_inline}}</dt> - <dd> - <p><code>String</code>. S'il y a eu un problème avec le protocole TLS (for example, the certificate had expired, or a trusted root could not be found, or a certificate was revoked) then <code>status</code> will be "broken" and the <code>errorMessage</code> property will contain a string describing the error, taken from Firefox's internal list of error codes.</p> - - <p>Note though that at present you can only call <code>getSecurityInfo()</code> in the <code>onHeaderReceived</code> listener, and the <code>onHeaderReceived</code> event is not fired when the handshake fails. So in practice this will never be set. </p> - </dd> - <dt><code>hpkp</code> {{optional_inline}}</dt> - <dd><code>Boolean</code>. <code>true</code> si l'hôte utilise <a href="/fr/docs/Web/Security/Public_Key_Pinning">Public Key Pinning</a>, sinon <code>false</code>.</dd> - <dt><code>hsts</code> {{optional_inline}}</dt> - <dd><code>Boolean</code>. <code>true</code> si l'hôte utilise <a href="/fr/docs/Sécurité/HTTP_Strict_Transport_Security">Strict Transport Security</a>, sinon <code>false</code>.</dd> - <dt><code>isDomainMismatch</code> {{optional_inline}}</dt> - <dd><code>Boolean</code>. <code>true</code> si le nom de domaine du serveur ne correspond pas au nom de domaine dans son certificat, sinon <code>false</code>.</dd> - <dt><code>isExtendedValidation</code> {{optional_inline}}</dt> - <dd><code>Boolean</code>. <code>true</code> si le serveur possède un <a href="https://en.wikipedia.org/wiki/Extended_Validation_Certificate">Extended Validation Certificate</a>, sinon <code>false</code>.</dd> - <dt><code>isNotValidAtThisTime</code> {{optional_inline}}</dt> - <dd><code>Boolean</code>. <code>true</code> si l'heure actuelle tombe en dehors de la période de validité du certificat de serveur (c'est-à-dire que le certificat a expiré ou n'est pas encore valide), sinon <code>false</code>.</dd> - <dt><code>isUntrusted</code> {{optional_inline}}</dt> - <dd><code>Boolean</code>. <code>true</code> si une chaîne de retour à un certificat racine de confiance n'a pas pu être construite, sinon <code>false</code>.</dd> - <dt><code>keaGroupName</code> {{optional_inline}}</dt> - <dd><code>String</code>. Si <code>state</code> est "sécurisé" cela décrit l'algorithme d'échange de clé utilisé dans cette requête.</dd> - <dt><code>protocolVersion</code> {{optional_inline}}</dt> - <dd> - <p><code>String</code>. Version du protocole TLS utilisé. L'un des :</p> - - <ul> - <li>"TLSv1"</li> - <li>"TLSv1.1"</li> - <li>"TLSv1.2"</li> - <li>"TLSv1.3"</li> - <li>"inconnu" (si la version n'est pas valide)</li> - </ul> - </dd> - <dt><code>signatureSchemeName</code> {{optional_inline}}</dt> - <dd><code>String</code>. Si <code>state</code> est "sécurisé", cela décrit le schéma de signature utilisé dans cette requête.t.</dd> - <dt><code>state</code></dt> - <dd> - <p><code>String</code>. État de la connexion. L'un des :</p> - - <ul> - <li>"broken": la poignée de main TLS a échoué (par exemple, le certificat a expiré)</li> - <li>"insecure": la connexion n'est pas une connexion TLS</li> - <li>"secure": la connexion est une connexion TLS sécurisée</li> - <li>"weak": la connexion est une connexion TLS mais est considérée comme faible. Vous pouvez examiner les <code>weaknessReasons</code> pour découvrir le problème.</li> - </ul> - - <p>Notez cependant qu'actuellement, vous ne pouvez appele <code>getSecurityInfo()</code> que dans l'écouteur <code>onHeaderReceived</code>, et l'événement <code>onHeaderReceived</code> n'est pas déclenché lorsque la poignée de main échoue. Ainsi, dans la pratique, il ne sera jamais réglé sur "cassé".</p> - </dd> - <dt><code>weaknessReasons</code> {{optional_inline}}</dt> - <dd><code>String</code>. Si l'<code>état</code> est "faible", cela indique la raison. Actuellement, il ne peut contenir qu'une seule valeur "chiffre", ce qui indique que la suite de chiffres négociée est considérée comme faible.</dd> -</dl> - -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.SecurityInfo", 10)}}</p> - -<p>{{WebExtExamples}}</p> +{{AddonSidebar()}} + +Objet décrivant les propriétés de sécurité d'une requête Web particulière. Un objet de ce type est retourné depuis l'API {{WebExtAPIRef("webRequest.getSecurityInfo()")}}. + +Si la requête n'est pas sécurisée par [TLS](/fr/docs/Glossaire/TLS), alors cet objet ne contiendra que l'état de la propriété `state`, dont la valeur sera `"insecure"`. + +## Type + +Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes : + +- `certificates` + + - : `Array` de {{WebExtAPIRef("webRequest.CertificateInfo", "CertificateInfo")}}. Si {{WebExtAPIRef("webRequest.getSecurityInfo()")}} a été appelé avec l'option `certificateChain` présente et définie sur `true`, cela contiendra un objet `CertificateInfo` pour chaque certificat de la chaîne, depuis le certificat du serveur jusqu'à et y compris la racine de confiance. + + Sinon, il contiendra un seul objet `CertificateInfo`, pour le certificat du serveur. + +- `certificateTransparencyStatus` {{optional_inline}} + + - : `String`. Indique l'état de la [transparence des certificats](https://www.certificate-transparency.org/) pour la connexion. Ceci peut prendre l'une des valeurs suivantes : + + - "not_applicable" + - "policy_compliant" + - "policy_not_enough_scts" + - "policy_not_diverse_scts" + +- `cipherSuite` {{optional_inline}} + - : `String`. Suite de chiffrement utilisée pour la connexion, formatée selon la [specification TLS ](https://tools.ietf.org/html/rfc5246#appendix-A.5): par exemple, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256". +- `errorMessage` {{optional_inline}} + + - : `String`. S'il y a eu un problème avec le protocole TLS (for example, the certificate had expired, or a trusted root could not be found, or a certificate was revoked) then `status` will be "broken" and the `errorMessage` property will contain a string describing the error, taken from Firefox's internal list of error codes. + + Note though that at present you can only call `getSecurityInfo()` in the `onHeaderReceived` listener, and the `onHeaderReceived` event is not fired when the handshake fails. So in practice this will never be set. + +- `hpkp` {{optional_inline}} + - : `Boolean`. `true` si l'hôte utilise [Public Key Pinning](/fr/docs/Web/Security/Public_Key_Pinning), sinon `false`. +- `hsts` {{optional_inline}} + - : `Boolean`. `true` si l'hôte utilise [Strict Transport Security](/fr/docs/Sécurité/HTTP_Strict_Transport_Security), sinon `false`. +- `isDomainMismatch` {{optional_inline}} + - : `Boolean`. `true` si le nom de domaine du serveur ne correspond pas au nom de domaine dans son certificat, sinon `false`. +- `isExtendedValidation` {{optional_inline}} + - : `Boolean`. `true` si le serveur possède un [Extended Validation Certificate](https://en.wikipedia.org/wiki/Extended_Validation_Certificate), sinon `false`. +- `isNotValidAtThisTime` {{optional_inline}} + - : `Boolean`. `true` si l'heure actuelle tombe en dehors de la période de validité du certificat de serveur (c'est-à-dire que le certificat a expiré ou n'est pas encore valide), sinon `false`. +- `isUntrusted` {{optional_inline}} + - : `Boolean`. `true` si une chaîne de retour à un certificat racine de confiance n'a pas pu être construite, sinon `false`. +- `keaGroupName` {{optional_inline}} + - : `String`. Si `state` est "sécurisé" cela décrit l'algorithme d'échange de clé utilisé dans cette requête. +- `protocolVersion` {{optional_inline}} + + - : `String`. Version du protocole TLS utilisé. L'un des : + + - "TLSv1" + - "TLSv1.1" + - "TLSv1.2" + - "TLSv1.3" + - "inconnu" (si la version n'est pas valide) + +- `signatureSchemeName` {{optional_inline}} + - : `String`. Si `state` est "sécurisé", cela décrit le schéma de signature utilisé dans cette requête.t. +- `state` + + - : `String`. État de la connexion. L'un des : + + - "broken": la poignée de main TLS a échoué (par exemple, le certificat a expiré) + - "insecure": la connexion n'est pas une connexion TLS + - "secure": la connexion est une connexion TLS sécurisée + - "weak": la connexion est une connexion TLS mais est considérée comme faible. Vous pouvez examiner les `weaknessReasons` pour découvrir le problème. + + Notez cependant qu'actuellement, vous ne pouvez appele `getSecurityInfo()` que dans l'écouteur `onHeaderReceived`, et l'événement `onHeaderReceived` n'est pas déclenché lorsque la poignée de main échoue. Ainsi, dans la pratique, il ne sera jamais réglé sur "cassé". + +- `weaknessReasons` {{optional_inline}} + - : `String`. Si l'`état` est "faible", cela indique la raison. Actuellement, il ne peut contenir qu'une seule valeur "chiffre", ce qui indique que la suite de chiffres négociée est considérée comme faible. + +## Compatibilité du navigateur + +{{Compat("webextensions.api.webRequest.SecurityInfo", 10)}} + +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/close/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/close/index.md index a96fd5ef96..af87463a5f 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/close/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/close/index.md @@ -10,41 +10,43 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/close --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Ferme la demande. Après cet appel, aucune autre donnée de réponse ne sera transmise au moteur de rendu du navigateur et aucun autre événement de filtrage ne sera donné à l'extension.</p> +Ferme la demande. Après cet appel, aucune autre donnée de réponse ne sera transmise au moteur de rendu du navigateur et aucun autre événement de filtrage ne sera donné à l'extension. -<p>Notez la différence entre cette fonction et {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}. Avec <code>disconnect()</code>, le navigateur continuera à traiter d'autres données de réponse, mais il ne sera pas accessible par le filtre. Avec <code>close()</code>, le navigateur ignorera toutes les données de réponse qui n'ont pas déjà été transmises au moteur de rendu.</p> +Notez la différence entre cette fonction et {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}. Avec `disconnect()`, le navigateur continuera à traiter d'autres données de réponse, mais il ne sera pas accessible par le filtre. Avec `close()`, le navigateur ignorera toutes les données de réponse qui n'ont pas déjà été transmises au moteur de rendu. -<p>Vous devriez toujours appeler <code>close()</code> ou <code>disconnect()</code> une fois que vous n'avez plus besoin d'interagir avec la réponse.</p> +Vous devriez toujours appeler `close()` ou `disconnect()` une fois que vous n'avez plus besoin d'interagir avec la réponse. -<p>Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.</p> +Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">filter.close() -</pre> +```js +filter.close() +``` -<h3 id="Paramètres">Paramètres</h3> +### Paramètres -<p>None.</p> +None. -<h3 id="Valeur_retournée">Valeur retournée</h3> +### Valeur retournée -<p>None.</p> +None. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.close", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.close", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple remplacera le contenu de la page par "texte de remplacement" :</p> +Cet exemple remplacera le contenu de la page par "texte de remplacement" : -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); - filter.onstart = event => { + filter.onstart = event => { console.log("started"); let encoder = new TextEncoder(); filter.write(encoder.encode("replacement content")); @@ -56,6 +58,7 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.org/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/disconnect/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/disconnect/index.md index e2547a136d..57c741709a 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/disconnect/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/disconnect/index.md @@ -10,45 +10,39 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/disconnect --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}}Déconnecte le filtre de la requête. Après cela, le navigateur continuera à traiter la réponse, mais plus aucun événement de filtrage ne se déclenchera, et plus aucun appel de fonction de filtrage n'aura d'effet.Notez la différence entre cette fonction et {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}. Avec `disconnect()`, le navigateur continuera à traiter d'autres données de réponse, mais il ne sera pas accessible par le filtre. Avec `close()`, le navigateur ignorera toutes les données de réponse qui n'ont pas déjà été transmises au moteur de rendu. -<div>Déconnecte le filtre de la requête. Après cela, le navigateur continuera à traiter la réponse, mais plus aucun événement de filtrage ne se déclenchera, et plus aucun appel de fonction de filtrage n'aura d'effet.</div> +Vous devriez toujours appeler `disconnect()` ou `close()` une fois que vous n'avez plus besoin d'interagir avec la réponse. -<div></div> +Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché. -<div>Notez la différence entre cette fonction et {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}. Avec <code>disconnect()</code>, le navigateur continuera à traiter d'autres données de réponse, mais il ne sera pas accessible par le filtre. Avec <code>close()</code>, le navigateur ignorera toutes les données de réponse qui n'ont pas déjà été transmises au moteur de rendu.</div> +## Syntaxe -<div></div> +```js +filter.disconnect() +``` -<p>Vous devriez toujours appeler <code>disconnect()</code> ou <code>close()</code> une fois que vous n'avez plus besoin d'interagir avec la réponse.</p> +### Paramètres -<p>Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.</p> +None. -<h2 id="Syntaxe">Syntaxe</h2> +### Valeur retournée -<pre class="brush: js">filter.disconnect() -</pre> +None. -<h3 id="Paramètres">Paramètres</h3> +## Compatibilité du navigateur -<p>None.</p> +{{Compat("webextensions.api.webRequest.StreamFilter.disconnect", 10)}} -<h3 id="Valeur_retournée">Valeur retournée</h3> +## Exemples -<p>None.</p> +Cet exemple précèdera "preface text" au corps de la réponse. Il se déconnecte ensuite, de sorte que le corps de réponse d'origine se charge normalement : -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> - -<p>{{Compat("webextensions.api.webRequest.StreamFilter.disconnect", 10)}}</p> - -<h2 id="Exemples">Exemples</h2> - -<p>Cet exemple précèdera "preface text" au corps de la réponse. Il se déconnecte ensuite, de sorte que le corps de réponse d'origine se charge normalement :</p> - -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); - filter.onstart = event => { + filter.onstart = event => { console.log("started"); let encoder = new TextEncoder(); filter.write(encoder.encode("preface text")); @@ -60,6 +54,7 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.org/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/error/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/error/index.md index 231af486e9..ea9754e290 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/error/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/error/index.md @@ -11,24 +11,23 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/error --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<div> -<p>Une chaîne de caractères qui contiendra un message d'erreur après le déclenchement de l'événement {{WebExtAPIRef("webRequest.StreamFilter.onerror", "onerror")}}.</p> -</div> +Une chaîne de caractères qui contiendra un message d'erreur après le déclenchement de l'événement {{WebExtAPIRef("webRequest.StreamFilter.onerror", "onerror")}}. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.error", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.error", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple ajoute un écouteur {{WebExtAPIRef("webRequest.StreamFilter.onerror", "onerror")}} qui enregistre la valeur de <code>error</code>.</p> +Cet exemple ajoute un écouteur {{WebExtAPIRef("webRequest.StreamFilter.onerror", "onerror")}} qui enregistre la valeur de `error`. -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData("12345"); - filter.onerror = event => { + filter.onerror = event => { console.log(`Error: ${filter.error}`); } @@ -37,8 +36,9 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/error browser.webRequest.onBeforeRequest.addListener( listener, - {urls: ["<all_urls>"], types: ["main_frame"]}, + {urls: ["<all_urls>"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/index.md index 5e80064be0..a15d8903f4 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/index.md @@ -14,100 +14,95 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Un <code>StreamFilter</code> est un objet que vous pouvez utiliser pour surveiller et modifier les réponses HTTP.</p> +Un `StreamFilter` est un objet que vous pouvez utiliser pour surveiller et modifier les réponses HTTP. -<p>Pour créer un <code>StreamFilter</code>, appelez {{WebExtAPIRef("webRequest.filterResponseData()")}}, en lui passant l'ID de la requête web que vous voulez filtrer.</p> +Pour créer un `StreamFilter`, appelez {{WebExtAPIRef("webRequest.filterResponseData()")}}, en lui passant l'ID de la requête web que vous voulez filtrer. -<p>Vous pouvez imaginer le filtre de flux entre la pile réseau et le moteur de rendu du navigateur. Le filtre passe les données de réponse HTTP au fur et à mesure qu'il est reçu du réseau, et peut examiner et modifier les données avant de les transmettre au moteur de rendu, où elles seront analysées et rendues.</p> +Vous pouvez imaginer le filtre de flux entre la pile réseau et le moteur de rendu du navigateur. Le filtre passe les données de réponse HTTP au fur et à mesure qu'il est reçu du réseau, et peut examiner et modifier les données avant de les transmettre au moteur de rendu, où elles seront analysées et rendues. -<p>Le filtre génère quatre événements différents :</p> +Le filtre génère quatre événements différents : -<ul> - <li>{{WebEXTAPIRef("webRequest.StreamFilter.onstart", "onstart")}} lorsque le filtre est sur le point de commencer à recevoir les données de réponse.</li> - <li>{{WebEXTAPIRef("webRequest.StreamFilter.ondata", "ondata")}} lorsque des données de réponse ont été reçues par le filtre et sont disponibles pour être examinées ou modifiées.</li> - <li>{{WebEXTAPIRef("webRequest.StreamFilter.onstop", "onstop")}} lorsque le filtre a fini de recevoir les données de réponse.</li> - <li>{{WebEXTAPIRef("webRequest.StreamFilter.onerror", "onerror")}} si une erreur s'est produite lors de l'initialisation et de l'utilisation du filtre.</li> -</ul> +- {{WebEXTAPIRef("webRequest.StreamFilter.onstart", "onstart")}} lorsque le filtre est sur le point de commencer à recevoir les données de réponse. +- {{WebEXTAPIRef("webRequest.StreamFilter.ondata", "ondata")}} lorsque des données de réponse ont été reçues par le filtre et sont disponibles pour être examinées ou modifiées. +- {{WebEXTAPIRef("webRequest.StreamFilter.onstop", "onstop")}} lorsque le filtre a fini de recevoir les données de réponse. +- {{WebEXTAPIRef("webRequest.StreamFilter.onerror", "onerror")}} si une erreur s'est produite lors de l'initialisation et de l'utilisation du filtre. -<p>Vous pouvez écouter chaque événement en assignant une fonction d'écoute à son attribut :</p> +Vous pouvez écouter chaque événement en assignant une fonction d'écoute à son attribut : -<pre class="brush: js">filter.onstart = event => { +```js +filter.onstart = event => { console.log("started"); -}</pre> +} +``` + +Notez que la demande est bloquée pendant l'exécution de n'importe quel auditeur d'événement. -<p>Notez que la demande est bloquée pendant l'exécution de n'importe quel auditeur d'événement.</p> +Le filtre fournit une fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}. A tout moment à partir de l'événement `onstart`, vous pouvez utiliser cette fonction pour écrire des données dans le flux de sortie. -<p>Le filtre fournit une fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}. A tout moment à partir de l'événement <code>onstart</code>, vous pouvez utiliser cette fonction pour écrire des données dans le flux de sortie.</p> +Si vous assignez des auditeurs à l'un des événements du filtre, alors toutes les données de réponse transmises au moteur de rendu seront fournies par les appels que vous faites pour `write()`: donc si vous ajoutez un auditeur mais n'appelez pas `write()`, alors la page rendue sera vide. -<p>Si vous assignez des auditeurs à l'un des événements du filtre, alors toutes les données de réponse transmises au moteur de rendu seront fournies par les appels que vous faites pour <code>write()</code>: donc si vous ajoutez un auditeur mais n'appelez pas <code>write()</code>, alors la page rendue sera vide.</p> +Une fois que vous avez terminé d'interagir avec la réponse, vous appelez l'un ou l'autre des éléments suivants : -<p>Une fois que vous avez terminé d'interagir avec la réponse, vous appelez l'un ou l'autre des éléments suivants :</p> +- {{WebEXTAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}} : Cela déconnecte le filtre de la requête, de sorte que le reste de la réponse est traité normalement. +- {{WebEXTAPIRef("webRequest.StreamFilter.close()", "close()")}}: Cela met fin à la demande, de sorte qu'aucune donnée de réponse supplémentaire ne sera traitée. -<ul> - <li>{{WebEXTAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}} : Cela déconnecte le filtre de la requête, de sorte que le reste de la réponse est traité normalement.</li> - <li>{{WebEXTAPIRef("webRequest.StreamFilter.close()", "close()")}}: Cela met fin à la demande, de sorte qu'aucune donnée de réponse supplémentaire ne sera traitée.</li> -</ul> +Le filtre fournit également des fonctions à {{WebEXTAPIRef("webRequest.StreamFilter.suspend()", "suspend()")}} et {{WebEXTAPIRef("webRequest.StreamFilter.resume()", "resume()")}} la requête. -<p>Le filtre fournit également des fonctions à {{WebEXTAPIRef("webRequest.StreamFilter.suspend()", "suspend()")}} et {{WebEXTAPIRef("webRequest.StreamFilter.resume()", "resume()")}} la requête.</p> +## Méthodes -<h2 id="Méthodes">Méthodes</h2> +- {{WebExtAPIRef("webRequest.StreamFilter.close()")}} + - : Ferme la demande. +- {{WebExtAPIRef("webRequest.StreamFilter.disconnect()")}} + - : Déconnecte le filtre de la requête. +- {{WebExtAPIRef("webRequest.StreamFilter.resume()")}} + - : Reprend le traitement de la demande. -<dl> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.close()")}}</dt> - <dd>Ferme la demande.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.disconnect()")}}</dt> - <dd>Déconnecte le filtre de la requête.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.resume()")}}</dt> - <dd>Reprend le traitement de la demande.</dd> -</dl> +<!----> -<dl> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.suspend()")}}</dt> - <dd>Suspend le traitement de la demande.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.write()")}}</dt> - <dd>Écrit quelques données dans le flux de sortie.</dd> -</dl> +- {{WebExtAPIRef("webRequest.StreamFilter.suspend()")}} + - : Suspend le traitement de la demande. +- {{WebExtAPIRef("webRequest.StreamFilter.write()")}} + - : Écrit quelques données dans le flux de sortie. -<h2 id="Propriétés">Propriétés</h2> +## Propriétés -<dl> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.ondata")}}</dt> - <dd>Gestionnaire d'événements qui est appelé lorsque les données entrantes sont disponibles.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.onerror")}}</dt> - <dd>Gestionnaire d'événements qui est appelé lorsqu'une erreur s'est produite.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.onstart")}}</dt> - <dd>Gestionnaire d'événements qui est appelé lorsque le flux est sur le point de commencer à recevoir des données.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.onstop")}}</dt> - <dd>Gestionnaire d'événements qui est appelé lorsque le flux n'a plus de données à livrer et qu'il s'est fermé.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.error")}}</dt> - <dd>Quand {{WebExtAPIRef("webRequest.StreamFilter.onerror")}} est appelé, cela décrira l'erreur.</dd> - <dt>{{WebExtAPIRef("webRequest.StreamFilter.status")}}</dt> - <dd>Décrit l'état actuel du flux.</dd> -</dl> +- {{WebExtAPIRef("webRequest.StreamFilter.ondata")}} + - : Gestionnaire d'événements qui est appelé lorsque les données entrantes sont disponibles. +- {{WebExtAPIRef("webRequest.StreamFilter.onerror")}} + - : Gestionnaire d'événements qui est appelé lorsqu'une erreur s'est produite. +- {{WebExtAPIRef("webRequest.StreamFilter.onstart")}} + - : Gestionnaire d'événements qui est appelé lorsque le flux est sur le point de commencer à recevoir des données. +- {{WebExtAPIRef("webRequest.StreamFilter.onstop")}} + - : Gestionnaire d'événements qui est appelé lorsque le flux n'a plus de données à livrer et qu'il s'est fermé. +- {{WebExtAPIRef("webRequest.StreamFilter.error")}} + - : Quand {{WebExtAPIRef("webRequest.StreamFilter.onerror")}} est appelé, cela décrira l'erreur. +- {{WebExtAPIRef("webRequest.StreamFilter.status")}} + - : Décrit l'état actuel du flux. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Ce code écoute pour <code>onstart</code>, <code>ondata</code> et <code>onstop</code>. Il enregistre simplement ces événements et les données de réponse elles-mêmes :</p> +Ce code écoute pour `onstart`, `ondata` et `onstop`. Il enregistre simplement ces événements et les données de réponse elles-mêmes : -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); - filter.onstart = event => { + filter.onstart = event => { console.log("started"); } - filter.ondata = event => { + filter.ondata = event => { console.log(event.data); filter.write(event.data); } - filter.onstop = event => { + filter.onstop = event => { console.log("finished"); filter.disconnect(); } @@ -119,6 +114,7 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.org/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/ondata/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/ondata/index.md index 46483be6e3..0dd7fd0354 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/ondata/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/ondata/index.md @@ -13,22 +13,23 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/ondata --- -<div>{{AddonSidebar()}} -<p>Un gestionnaire d'événements qui sera appelé à plusieurs reprises lorsque les données de réponse sont disponibles. Le gestionnaire est passé un objet <code>event</code> qui contient une propriété de <code>data</code>, qui contient un morceau des données de réponse sous la forme d'un {{domxref("ArrayBuffer")}}.</p> -</div> +{{AddonSidebar()}} -<h2 id="Exemples">Exemples</h2> +Un gestionnaire d'événements qui sera appelé à plusieurs reprises lorsque les données de réponse sont disponibles. Le gestionnaire est passé un objet `event` qui contient une propriété de `data`, qui contient un morceau des données de réponse sous la forme d'un {{domxref("ArrayBuffer")}}. -<p>Cet exemple ajoute un écouteur <code>ondata</code> qui remplace "Example" dans la réponse par "WebExtension Example".</p> +## Exemples -<p>Notez que cet exemple ne fonctionne que pour les occurrences de "Example" qui sont entièrement contenues dans un bloc de données, et non celles qui chevauchent deux morceaux (ce qui peut arriver ~0.1% du temps pour les gros documents). De plus, il ne traite que les documents codés UTF-8. Une véritable mise en œuvre de ce projet devrait être plus complexe.</p> +Cet exemple ajoute un écouteur `ondata` qui remplace "Example" dans la réponse par "WebExtension Example". -<pre class="brush: js">function listener(details) { +Notez que cet exemple ne fonctionne que pour les occurrences de "Example" qui sont entièrement contenues dans un bloc de données, et non celles qui chevauchent deux morceaux (ce qui peut arriver \~0.1% du temps pour les gros documents). De plus, il ne traite que les documents codés UTF-8. Une véritable mise en œuvre de ce projet devrait être plus complexe. + +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let decoder = new TextDecoder("utf-8"); let encoder = new TextEncoder(); - filter.ondata = event => { + filter.ondata = event => { let str = decoder.decode(event.data, {stream: true}); // Just change any instance of Example in the HTTP response // to WebExtension Example. @@ -40,7 +41,7 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/ondata // the chunk boundary! } - filter.onstop = event => { + filter.onstop = event => { filter.close(); } @@ -51,34 +52,36 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.com/*"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>Un autre exemple pour le traitement de documents volumineux :</p> +Un autre exemple pour le traitement de documents volumineux : -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let decoder = new TextDecoder("utf-8"); let encoder = new TextEncoder(); let data = []; - filter.ondata = event => { + filter.ondata = event => { data.push(event.data); }; - filter.onstop = event => { + filter.onstop = event => { let str = ""; if (data.length == 1) { str = decoder.decode(data[0]); } else { - for (let i = 0; i < data.length; i++) { + for (let i = 0; i < data.length; i++) { let stream = (i == data.length - 1) ? false : true; str += decoder.decode(data[i], {stream}); } } // Just change any instance of Example in the HTTP response // to WebExtension Example. - str = str.replace(/Example/g, 'WebExtension $&'); + str = str.replace(/Example/g, 'WebExtension $&'); filter.write(encoder.encode(str)); filter.close(); }; @@ -88,27 +91,29 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.com/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>L'exemple ci-dessus peut aussi s'écrire ainsi :</p> +L'exemple ci-dessus peut aussi s'écrire ainsi : -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let decoder = new TextDecoder("utf-8"); let encoder = new TextEncoder(); let data = []; - filter.ondata = event => { + filter.ondata = event => { data.push(decoder.decode(event.data, {stream: true})); }; - filter.onstop = event => { + filter.onstop = event => { data.push(decoder.decode()); let str = data.join(""); // Just change any instance of Example in the HTTP response // to WebExtension Example. - str = str.replace(/Example/g, 'WebExtension $&'); + str = str.replace(/Example/g, 'WebExtension $&'); filter.write(encoder.encode(str)); filter.close(); }; @@ -118,26 +123,28 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.com/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>Cet exemple utilise un {{domxref("Blob")}}:</p> +Cet exemple utilise un {{domxref("Blob")}}: -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let encoder = new TextEncoder(); let data = []; - filter.ondata = event => { + filter.ondata = event => { data.push(event.data); }; - filter.onstop = async event => { + filter.onstop = async event => { let blob = new Blob(data, {type: 'text/html'}); let str = await blob.text(); // Just change any instance of Example in the HTTP response // to WebExtension Example. - str = str.replace(/Example/g, 'WebExtension $&'); + str = str.replace(/Example/g, 'WebExtension $&'); filter.write(encoder.encode(str)); filter.close(); }; @@ -147,28 +154,30 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.com/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>Cet exemple combine tous les tampons en un simple tampon :</p> +Cet exemple combine tous les tampons en un simple tampon : -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let decoder = new TextDecoder("utf-8"); let encoder = new TextEncoder(); let data = []; - filter.ondata = event => { + filter.ondata = event => { data.push(new Uint8Array(event.data)); }; - filter.onstop = event => { + filter.onstop = event => { let combinedLength = 0; for (let buffer of data) { combinedLength += buffer.length; } let combinedArray = new Uint8Array(combinedLength); let writeOffset = 0; - while (writeOffset < combinedLength) { + while (writeOffset < combinedLength) { let buffer = data.shift(); combinedArray.set(buffer, writeOffset); writeOffset += buffer.length; @@ -176,7 +185,7 @@ browser.webRequest.onBeforeRequest.addListener( let str = decoder.decode(combinedArray); // Just change any instance of Example in the HTTP response // to WebExtension Example. - str = str.replace(/Example/g, 'WebExtension $&'); + str = str.replace(/Example/g, 'WebExtension $&'); filter.write(encoder.encode(str)); filter.close(); }; @@ -186,10 +195,11 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.com/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.ondata", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.ondata", 10)}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onerror/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onerror/index.md index d8f398ffa9..1c4ee505b1 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onerror/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onerror/index.md @@ -11,28 +11,27 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onerror --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<div> -<p>Un gestionnaire d'événements qui sera appelé lorsqu'une erreur se produit. C'est le plus souvent parce qu'un ID de requête invalide a été passé dans {{WebExtAPIRef("webRequest.filterResponseData()")}}.</p> +Un gestionnaire d'événements qui sera appelé lorsqu'une erreur se produit. C'est le plus souvent parce qu'un ID de requête invalide a été passé dans {{WebExtAPIRef("webRequest.filterResponseData()")}}. -<p>Après le déclenchement de cet événement, la propriété {{WebExtAPIRef("webRequest.StreamFilter.error")}} contiendra un message donnant plus d'informations sur l'erreur.</p> +Après le déclenchement de cet événement, la propriété {{WebExtAPIRef("webRequest.StreamFilter.error")}} contiendra un message donnant plus d'informations sur l'erreur. -<p>Notez que cet événement n'est <em>pas</em> déclenché pour les erreurs réseau.</p> -</div> +Notez que cet événement n'est _pas_ déclenché pour les erreurs réseau. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.onerror", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.onerror", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple ajoute un écouteur <code>onerror</code> qui enregistre la valeur de {{WebExtAPIRef("webRequest.StreamFilter.error")}}.</p> +Cet exemple ajoute un écouteur `onerror` qui enregistre la valeur de {{WebExtAPIRef("webRequest.StreamFilter.error")}}. -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData("12345"); - filter.onerror = event => { + filter.onerror = event => { console.log(`Error: ${filter.error}`); } @@ -41,9 +40,9 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onerro browser.webRequest.onBeforeRequest.addListener( listener, - {urls: ["<all_urls>"], types: ["main_frame"]}, + {urls: ["<all_urls>"], types: ["main_frame"]}, ["blocking"] ); -</pre> +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstart/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstart/index.md index 8d698238f0..ba704ac5b7 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstart/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstart/index.md @@ -11,24 +11,23 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onstart --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<div> -<p>Un gestionnaire d'événements qui sera appelé lorsque le flux est ouvert et est sur le point de commencer à livrer les données. A partir de ce point, l'extension peut utiliser des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}.</p> -</div> +Un gestionnaire d'événements qui sera appelé lorsque le flux est ouvert et est sur le point de commencer à livrer les données. A partir de ce point, l'extension peut utiliser des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.onstart", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.onstart", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple remplacera le contenu de la page par "texte de remplacement" :</p> +Cet exemple remplacera le contenu de la page par "texte de remplacement" : -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); - filter.onstart = event => { + filter.onstart = event => { console.log("started"); let encoder = new TextEncoder(); filter.write(encoder.encode("replacement content")); @@ -40,6 +39,7 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.org/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstop/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstop/index.md index 1ae77d7ce5..af5fa88166 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstop/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstop/index.md @@ -11,30 +11,29 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onstop --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<div> -<p>Un gestionnaire d'événements qui sera appelé lorsque le flux n'a plus de données à livrer. IDans le gestionnaire d'événements, vous pouvez toujours appeler des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}.</p> -</div> +Un gestionnaire d'événements qui sera appelé lorsque le flux n'a plus de données à livrer. IDans le gestionnaire d'événements, vous pouvez toujours appeler des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.onstop", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.onstop", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple ajoutera des "extra stuff" à la réponse :</p> +Cet exemple ajoutera des "extra stuff" à la réponse : -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let encoder = new TextEncoder(); - filter.ondata = event => { + filter.ondata = event => { // pass through all the response data filter.write(event.data); } - filter.onstop = event => { + filter.onstop = event => { filter.write(encoder.encode("extra stuff")); filter.disconnect(); } @@ -44,6 +43,7 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.com/*"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/resume/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/resume/index.md index 53fbef7737..9028cb0696 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/resume/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/resume/index.md @@ -11,40 +11,42 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/resume --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Reprend une requête qui a été précédemment suspendue par un appel à {{WebExtAPIRef("webRequest.StreamFilter.suspend()", "suspend()")}}.</p> +Reprend une requête qui a été précédemment suspendue par un appel à {{WebExtAPIRef("webRequest.StreamFilter.suspend()", "suspend()")}}. -<p>Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.</p> +Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">filter.suspend() -</pre> +```js +filter.suspend() +``` -<h3 id="Paramètres">Paramètres</h3> +### Paramètres -<p>None.</p> +None. -<h3 id="Valeur_retournée">Valeur retournée</h3> +### Valeur retournée -<p>None.</p> +None. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.suspend", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.suspend", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple utilise la <em>suspend/resume</em> pour retarder une requête web</p> +Cet exemple utilise la _suspend/resume_ pour retarder une requête web -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); - filter.onstart = event => { + filter.onstart = event => { filter.suspend(); - setTimeout(() => { + setTimeout(() => { filter.resume(); filter.disconnect(); }, 1000); @@ -56,6 +58,7 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.org/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/status/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/status/index.md index a235d323c2..e4c4fce7d2 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/status/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/status/index.md @@ -11,50 +11,47 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/status --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<div> -<p>Une chaîne de caractères qui décrit l'état actuel de la demande. Ce sera l'une des valeurs suivantes :</p> +Une chaîne de caractères qui décrit l'état actuel de la demande. Ce sera l'une des valeurs suivantes : -<dl> - <dt><code>"uninitialized"</code></dt> - <dd>Le filtre n'est pas entièrement initialisé. Aucune fonction de filtrage ne peut être appelée.</dd> - <dt><code>"transferringdata"</code></dt> - <dd>Le canal sous-jacent transfère actuellement des données qui seront acheminées vers l'extension dans un ou plusieurs événements {{WebExtAPIRef("webRequest.StreamFilter.ondata", "ondata")}}. L'extension peut appeler des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}.</dd> - <dt><code>"finishedtransferringdata"</code></dt> - <dd>Le canal sous-jacent a terminé le transfert des données. Dans cet état, l'extension peut toujours écrire des données de réponse en utilisant la fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}} du filtre.</dd> - <dt><code>"suspended"</code></dt> - <dd> Le transfert de données est actuellement suspendu. Dans cet état, l'extension peut reprendre la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.resume()", "resume()")}} et peut écrire les données de réponse en utilisant la fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}} du filtre.</dd> - <dt><code>"closed"</code></dt> - <dd>L'extension a fermé la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}} du filtre. Le filtre ne déclenchera plus d'événements, et l'extension ne peut pas appeler de fonctions de filtrage.</dd> - <dt><code>"disconnected"</code></dt> - <dd> L'extension a déconnecté le filtre de la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}} du filtre. Toutes les autres données seront livrées directement, sans passer par le filtre. Le filtre ne déclenchera plus d'événements, et l'extension ne peut pas appeler de fonctions de filtrage.</dd> - <dt><code>"failed"</code></dt> - <dd>Une erreur s'est produite et le filtre a été déconnecté de la requête. L'extension peut trouver un message d'erreur dans {{WebExtAPIRef("webRequest.StreamFilter.error", "error")}}, et ne peut appeler aucune fonction de filtrage.</dd> -</dl> -</div> +- `"uninitialized"` + - : Le filtre n'est pas entièrement initialisé. Aucune fonction de filtrage ne peut être appelée. +- `"transferringdata"` + - : Le canal sous-jacent transfère actuellement des données qui seront acheminées vers l'extension dans un ou plusieurs événements {{WebExtAPIRef("webRequest.StreamFilter.ondata", "ondata")}}. L'extension peut appeler des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}. +- `"finishedtransferringdata"` + - : Le canal sous-jacent a terminé le transfert des données. Dans cet état, l'extension peut toujours écrire des données de réponse en utilisant la fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}} du filtre. +- `"suspended"` + - : Le transfert de données est actuellement suspendu. Dans cet état, l'extension peut reprendre la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.resume()", "resume()")}} et peut écrire les données de réponse en utilisant la fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}} du filtre. +- `"closed"` + - : L'extension a fermé la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}} du filtre. Le filtre ne déclenchera plus d'événements, et l'extension ne peut pas appeler de fonctions de filtrage. +- `"disconnected"` + - : L'extension a déconnecté le filtre de la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}} du filtre. Toutes les autres données seront livrées directement, sans passer par le filtre. Le filtre ne déclenchera plus d'événements, et l'extension ne peut pas appeler de fonctions de filtrage. +- `"failed"` + - : Une erreur s'est produite et le filtre a été déconnecté de la requête. L'extension peut trouver un message d'erreur dans {{WebExtAPIRef("webRequest.StreamFilter.error", "error")}}, et ne peut appeler aucune fonction de filtrage. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.status", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.status", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); console.log(filter.status); // uninitialized - filter.onstart = event => { + filter.onstart = event => { console.log(filter.status); // transferringdata } - filter.ondata = event => { + filter.ondata = event => { console.log(filter.status); // transferringdata // pass through the response data filter.write(event.data); } - filter.onstop = event => { + filter.onstop = event => { console.log(filter.status); // finishedtransferringdata filter.disconnect(); console.log(filter.status); // disconnected @@ -65,6 +62,7 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.com/*"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/suspend/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/suspend/index.md index 3ea6f9e509..4568f8ad93 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/suspend/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/suspend/index.md @@ -11,40 +11,42 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/suspend --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Suspend une demande. Après cet appel, plus aucune donnée ne sera livrée jusqu'à ce que la requête soit reprise avec un appel à {{WebExtAPIRef("webRequest.StreamFilter.resume()", "resume()")}}.</p> +Suspend une demande. Après cet appel, plus aucune donnée ne sera livrée jusqu'à ce que la requête soit reprise avec un appel à {{WebExtAPIRef("webRequest.StreamFilter.resume()", "resume()")}}. -<p>Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.</p> +Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché. -<h2 id="Syntaxe">Syntaxe</h2> +## Syntaxe -<pre class="brush: js">filter.suspend() -</pre> +```js +filter.suspend() +``` -<h3 id="Paramètres">Paramètres</h3> +### Paramètres -<p>None.</p> +None. -<h3 id="Valeur_retournée">Valeur retournée</h3> +### Valeur retournée -<p>None.</p> +None. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.suspend", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.suspend", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple utilise la <em>suspend/resume</em> pour retarder une requête web.</p> +Cet exemple utilise la _suspend/resume_ pour retarder une requête web. -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); - filter.onstart = event => { + filter.onstart = event => { filter.suspend(); - setTimeout(() => { + setTimeout(() => { filter.resume(); filter.disconnect(); }, 1000); @@ -56,6 +58,7 @@ browser.webRequest.onBeforeRequest.addListener( listener, {urls: ["https://example.org/"], types: ["main_frame"]}, ["blocking"] -);</pre> +); +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/write/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/write/index.md index 92146d4f82..d27b9dec5d 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/write/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/write/index.md @@ -11,48 +11,40 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/write --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}}Écrit quelques données de réponse dans le flux de sortie..Vous ne pouvez appeler cette fonction qu'après le déclenchement de l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}}. -<div>Écrit quelques données de réponse dans le flux de sortie..</div> +## Syntaxe -<div></div> - -<div>Vous ne pouvez appeler cette fonction qu'après le déclenchement de l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}}.</div> - -<div></div> - -<h2 id="Syntaxe">Syntaxe</h2> - -<pre class="brush: js">filter.write( +```js +filter.write( data // ArrayBuffer or Uint8Array ) -</pre> +``` -<h3 id="Paramètres">Paramètres</h3> +### Paramètres -<dl> - <dt><code>data</code></dt> - <dd><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Uint8Array">Uint8Array</a></code> ou <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer">ArrayBuffer</a></code>: tableau d'octets contenant les données à transmettre au moteur de rendu du navigateur.</dd> -</dl> +- `data` + - : [`Uint8Array`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/Uint8Array) ou [`ArrayBuffer`](/fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer): tableau d'octets contenant les données à transmettre au moteur de rendu du navigateur. -<h3 id="Valeur_retournée">Valeur retournée</h3> +### Valeur retournée -<p>None.</p> +None. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.StreamFilter.write", 10)}}</p> +{{Compat("webextensions.api.webRequest.StreamFilter.write", 10)}} -<h2 id="Exemples">Exemples</h2> +## Exemples -<p>Cet exemple utilise <code>write()</code> pour remplacer "Example" dans la réponse par "WebExtension Example".</p> +Cet exemple utilise `write()` pour remplacer "Example" dans la réponse par "WebExtension Example". -<pre class="brush: js">function listener(details) { +```js +function listener(details) { let filter = browser.webRequest.filterResponseData(details.requestId); let decoder = new TextDecoder("utf-8"); let encoder = new TextEncoder(); - filter.ondata = event => { + filter.ondata = event => { let str = decoder.decode(event.data, {stream: true}); // Just change any instance of Example in the HTTP response // to WebExtension Example. @@ -69,6 +61,6 @@ browser.webRequest.onBeforeRequest.addListener( {urls: ["https://example.com/*"], types: ["main_frame"]}, ["blocking"] ); -</pre> +``` -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/uploaddata/index.md b/files/fr/mozilla/add-ons/webextensions/api/webrequest/uploaddata/index.md index eee74f7c58..f68fd0e70c 100644 --- a/files/fr/mozilla/add-ons/webextensions/api/webrequest/uploaddata/index.md +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/uploaddata/index.md @@ -13,36 +13,32 @@ tags: - webRequest translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/UploadData --- -<div>{{AddonSidebar()}}</div> +{{AddonSidebar()}} -<p>Contient les données téléchargées dans une requête URL..</p> +Contient les données téléchargées dans une requête URL.. -<h2 id="Type">Type</h2> +## Type -<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> +Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes : -<dl> - <dt><code>bytes</code>{{optional_inline}}</dt> - <dd><code>any</code>. Un ArrayBuffer avec une copie des données.</dd> - <dt><code>file</code>{{optional_inline}}</dt> - <dd><code>string</code>. Une chaîne de caractères avec le chemin et le nom du fichier.</dd> -</dl> +- `bytes`{{optional_inline}} + - : `any`. Un ArrayBuffer avec une copie des données. +- `file`{{optional_inline}} + - : `string`. Une chaîne de caractères avec le chemin et le nom du fichier. -<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> +## Compatibilité du navigateur -<p>{{Compat("webextensions.api.webRequest.UploadData")}}</p> +{{Compat("webextensions.api.webRequest.UploadData")}} -<p>{{WebExtExamples}}</p> +{{WebExtExamples}} -<div class="note"><p><strong>Note :</strong></p> +> **Note :** +> +> Cette API est basée sur l'API Chromium [`chrome.webRequest`](https://developer.chrome.com/extensions/webRequest). Cette documentation est dérivée de [`web_request.json`](https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json) dans le code Chromium. +> +> Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis. -<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> - -<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> -</div> - -<div class="hidden"> -<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +<div class="hidden"><pre>// Copyright 2015 The Chromium Authors. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are @@ -69,5 +65,4 @@ translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/UploadData // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -</pre> -</div> +</pre></div> |