aboutsummaryrefslogtreecommitdiff
path: root/files/fr/mozilla/add-ons/webextensions/api/proxy/onrequest/index.html
blob: 209b532f15eceb5820a6e6e36fa581d3cf15eb6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
---
title: proxy.onRequest
slug: Mozilla/Add-ons/WebExtensions/API/proxy/onRequest
tags:
  - API
  - Add-ons
  - Event
  - Extensions
  - Proxy
  - Reference
  - WebExtensions
  - onRequest
translation_of: Mozilla/Add-ons/WebExtensions/API/proxy/onRequest
---
<div>{{AddonSidebar()}}</div>

<p>Déclenché lorsqu'une requête Web est sur le point d'être effectuée, pour donner à l'extension la possibilité de l'utiliser comme proxy.</p>

<p>Cet événement est étroitement modélisé sur les événements définis dans l'API  <code><a href="/fr/Add-ons/WebExtensions/API/webRequest">webRequest</a></code> Comme ces événements, sa fonction <code>addListener()</code> prend trois arguments :</p>

<ul>
 <li>l'écouteur qui sera appelé lorsque l'événement est déclenché.</li>
 <li>Un objet <code><a href="/fr/Add-ons/WebExtensions/API/webRequest/RequestFilter">RequestFilter</a></code> contrôlant quelles requêtes provoquent le déclenchement de l'événement.</li>
 <li>un tableau de chaînes pour contrôler d'autres aspects du comportement de l'événement.</li>
</ul>

<p>L'événement est déclenché avant l'un des événements <code>webRequest</code> pour la même demande.</p>

<p>Lorsque l'événement est déclenché, l'écouteur est appelé avec un objet contenant des informations sur la requête. L'écouteur renvoie un objet {{WebExtAPIRef("proxy.ProxyInfo")}} représentant un proxy à utiliser (ou un tableau de tels objets, permettant au navigateur de basculer si un proxy est inaccessible).</p>

<p>Pour utiliser <code>proxy.onRequest</code>, une extension doit avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission API</a> "proxy" , ainsi que la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission d'hôte</a> pour les URL des requêtes qu'elle intercepte - ela signifie essentiellement que les modèles de correspondance de l'argument <code>filter</code> doivent être un sous-ensemble de l'extension autorisations de l'hôte.</p>

<h2 id="Syntaxe">Syntaxe</h2>

<pre class="brush: js">browser.proxy.onRequest.addListener(
  listener,             //  function
  filter,               //  object
  extraInfoSpec         //  optional array of strings
)
browser.proxy.onRequest.removeListener(listener)
browser.proxy.onRequest.hasListener(listener)
</pre>

<p>Les événements ont trois fonctions :</p>

<dl>
 <dt><code>addListener(listener, 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>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd>
</dl>

<h2 id="Syntaxe_addListener">Syntaxe addListener</h2>

<h3 id="Paramètres">Paramètres</h3>

<dl>
 <dt><code>listener</code></dt>
 <dd>
 <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction passera un seul argument, qui est un objet {{WebExtAPIRef("proxy.RequestDetails")}} contenant les détails de la requête.</p>

 <p>L'écouteur peut renvoyer l'un des éléments suivants:</p>

 <ul>
  <li>un objet {{WebExtAPIRef("proxy.ProxyInfo")}}</li>
  <li>un tableau d'objets <code>proxy.ProxyInfo</code></li>
  <li>Une <code>Promise</code> qui se résout en un objet <code>ProxyInfo</code></li>
  <li>Une <code>Promise</code> qui résout en un tableau d'objets <code>ProxyInfo</code>.</li>
 </ul>

 <p>Si l'écouteur renvoie un tableau, ou une Promesse qui se résout en un tableau, alors tous les objets<code>ProxyInfo</code> après le premier représentent les basculements: si le proxy à la position N dans le tableau n'est pas accessible quand son <code>ProxyInfo.failoverTimeout</code> alors le navigateur essayez le proxy à la position N+1.</p>

 <p>S'il y a une erreur spécifiant les objets <code>proxy.ProxyInfo</code> objects, alors {{WebExtAPIRef("proxy.onError")}} sera appelé.</p>
 </dd>
 <dt><code>filter</code></dt>
 <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui limite les événements qui seront envoyés à cet écouteur.</dd>
 <dt><code>extraInfoSpec</code> {{optional_inline}}</dt>
 <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer une seule valeur, <code>"requestHeaders"</code>, pour inclure les en-têtes de demande dans l'objet de <code>details</code> transmis à l'écouteur.</dd>
</dl>

<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2>

<p>{{Compat("webextensions.api.proxy.onRequest", 10)}}</p>

<h2 id="Exemples">Exemples</h2>

<p>Ce code intercepte les requêtes à <code>&lt;all_urls&gt;</code>, et les envoie par procuration si elles ne sont pas destinées à un cadre de premier niveau.</p>

<pre class="brush: js">function shouldProxyRequest(requestInfo) {
  return requestInfo.parentFrameId != -1;
}

function handleProxyRequest(requestInfo) {
  if (shouldProxyRequest(requestInfo)) {
    console.log(`Proxying: ${requestInfo.url}`);
    return {type: "http", host: "127.0.0.1", port: 65535};
  }
  return {type: "direct"};
}

browser.proxy.onRequest.addListener(handleProxyRequest, {urls: ["&lt;all_urls&gt;"]});</pre>

<p>{{WebExtExamples}}</p>