aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/api/fetch/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'files/fr/web/api/fetch/index.md')
-rw-r--r--files/fr/web/api/fetch/index.md202
1 files changed, 84 insertions, 118 deletions
diff --git a/files/fr/web/api/fetch/index.md b/files/fr/web/api/fetch/index.md
index 30544929ec..a6820a8437 100644
--- a/files/fr/web/api/fetch/index.md
+++ b/files/fr/web/api/fetch/index.md
@@ -14,96 +14,77 @@ tags:
translation_of: Web/API/WindowOrWorkerGlobalScope/fetch
original_slug: Web/API/WindowOrWorkerGlobalScope/fetch
---
-<p>{{APIRef("Fetch")}}</p>
+{{APIRef("Fetch")}}
-<p>La méthode <code><strong>fetch()</strong></code> du mixin {{domxref("WindowOrWorkerGlobalScope")}} démarre le chargement d'une ressource sur le réseau et retourne une promesse qui est résolue dès que la réponse est disponible. La promesse résoud l'objet {{domxref("Response")}} représentant la réponse de votre requête. Cette promesse n'échoue pas en cas d'erreur HTTP, elle n'échoue que sur les problèmes de réseau. Vous devez utiliser un gestionnaire <code>then</code> pour identifier les erreurs HTTP.</p>
+La méthode **`fetch()`** du mixin {{domxref("WindowOrWorkerGlobalScope")}} démarre le chargement d'une ressource sur le réseau et retourne une promesse qui est résolue dès que la réponse est disponible. La promesse résoud l'objet {{domxref("Response")}} représentant la réponse de votre requête. Cette promesse n'échoue pas en cas d'erreur HTTP, elle n'échoue que sur les problèmes de réseau. Vous devez utiliser un gestionnaire `then` pour identifier les erreurs HTTP.
-<p><code>WindowOrWorkerGlobalScope</code> est aussi bien implémenté par {{domxref("Window")}} que par {{domxref("WorkerGlobalScope")}}, ce qui signifie que la méthode <code>fetch()</code> est disponible dans la plupart des cas où vous pourriez en avoir besoin.</p>
+`WindowOrWorkerGlobalScope` est aussi bien implémenté par {{domxref("Window")}} que par {{domxref("WorkerGlobalScope")}}, ce qui signifie que la méthode `fetch()` est disponible dans la plupart des cas où vous pourriez en avoir besoin.
-<p>Une promesse {{domxref("GlobalFetch.fetch","fetch()")}} n'est rejetée que quand un problème de réseau est rencontré, même si en réalité cela signifie généralement qu'il y a un problème de permissions ou quelque chose de similaire. La promesse ne sera pas rejetée en cas d'erreur HTTP (<code>404</code>, etc.) Pour cela, un gestionnaire <code>then()</code> doit vérifier que la propriété {{domxref("Response.ok")}} ait bien pour valeur <code>true</code> et/ou la valeur de la propriété {{domxref("Response.status")}}.</p>
+Une promesse {{domxref("GlobalFetch.fetch","fetch()")}} n'est rejetée que quand un problème de réseau est rencontré, même si en réalité cela signifie généralement qu'il y a un problème de permissions ou quelque chose de similaire. La promesse ne sera pas rejetée en cas d'erreur HTTP (`404`, etc.) Pour cela, un gestionnaire `then()` doit vérifier que la propriété {{domxref("Response.ok")}} ait bien pour valeur `true` et/ou la valeur de la propriété {{domxref("Response.status")}}.
-<p>La méthode <code>fetch()</code> est contrôlée par la directive <code>connect-src</code> de l'entête <a href="/fr/docs/Web/HTTP/Headers/Content-Security-Policy">Content Security Policy</a> plutôt que par la directive de la ressource qui est récupérée.</p>
+La méthode `fetch()` est contrôlée par la directive `connect-src` de l'entête [Content Security Policy](/fr/docs/Web/HTTP/Headers/Content-Security-Policy) plutôt que par la directive de la ressource qui est récupérée.
-<div class="note">
-<p><strong>Note :</strong> Les paramètres de la méthode <code>fetch()</code> sont identiques à ceux du contructeur d'une {{domxref("Request.Request","Request()")}}.</p>
-</div>
+> **Note :** Les paramètres de la méthode `fetch()` sont identiques à ceux du contructeur d'une {{domxref("Request.Request","Request()")}}.
-<h2 id="Syntaxe">Syntaxe</h2>
+## Syntaxe
-<pre class="syntaxbox">const <em>fetchResponsePromise</em> = Promise&lt;Response&gt; fetch(<em>entrée</em>[, <em>init</em>]);</pre>
+ const fetchResponsePromise = Promise<Response> fetch(entrée[, init]);
-<h3 id="Paramètres">Paramètres</h3>
+### Paramètres
-<dl>
- <dt><code><em>entrée</em></code></dt>
- <dd>Définit la ressource que vous voulez obtenir. Cela peut être :
- <ul>
- <li>Un {{domxref("USVString")}} qui contient l'URL de la ressource à obtenir. Certains navigateurs acceptent <code>blob:</code> et <code>data:</code>.</li>
- <li>Un objet {{domxref("Request")}}.</li>
- </ul>
- </dd>
- <dt><code><em>init</em></code> {{optional_inline}}</dt>
- <dd>
- <p>Un objet qui contient les paramètres de votre requête. Les options possibles sont :</p>
+- `entrée`
- <dl>
- <dt><code>method</code></dt>
- <dd>La méthode de la requête, par exemple <code>GET</code> ou <code>POST</code>.</dd>
+ - : Définit la ressource que vous voulez obtenir. Cela peut être :
- <dt><code>headers</code></dt>
- <dd>Les entêtes à ajouter à votre requête, contenues dans un objet {{domxref("Headers")}} ou dans un objet avec des {{domxref("ByteString")}} pour valeurs.</dd>
+ - Un {{domxref("USVString")}} qui contient l'URL de la ressource à obtenir. Certains navigateurs acceptent `blob:` et `data:`.
+ - Un objet {{domxref("Request")}}.
- <dt><code>body</code></dt>
- <dd>Le corps de votre requête. Cela peut être un {{domxref("Blob")}}, un {{domxref("BufferSource")}}, un {{domxref("FormData")}}, un {{domxref("URLSearchParams")}}, ou un {{domxref("USVString")}}. Notez cependant qu'une requête avec <code>GET</code> ou <code>HEAD</code> pour méthode ne peut pas avoir de corps.</dd>
+- `init` {{optional_inline}}
- <dt><code>mode</code></dt>
- <dd>Le mode à utiliser pour cette requête, par exemple <code>cors</code>, <code>no-cors</code>, ou <code>same-origin.</code></dd>
+ - : Un objet qui contient les paramètres de votre requête. Les options possibles sont :
- <dt><code>credentials</code></dt>
- <dd>Les identifiants à utiliser pour cette requête : <code>omit</code>, <code>same-origin</code>, ou <code>include</code>. Pour envoyer automatiquement les cookies pour le domaine actuel, cette option doit être définie. À partir de Chrome 50, cette propriété peut aussi prendre un objet {{domxref("FederatedCredential")}} ou une instance de {{domxref("PasswordCredential")}}.</dd>
+ - `method`
+ - : La méthode de la requête, par exemple `GET` ou `POST`.
+ - `headers`
+ - : Les entêtes à ajouter à votre requête, contenues dans un objet {{domxref("Headers")}} ou dans un objet avec des {{domxref("ByteString")}} pour valeurs.
+ - `body`
+ - : Le corps de votre requête. Cela peut être un {{domxref("Blob")}}, un {{domxref("BufferSource")}}, un {{domxref("FormData")}}, un {{domxref("URLSearchParams")}}, ou un {{domxref("USVString")}}. Notez cependant qu'une requête avec `GET` ou `HEAD` pour méthode ne peut pas avoir de corps.
+ - `mode`
+ - : Le mode à utiliser pour cette requête, par exemple `cors`, `no-cors`, ou `same-origin.`
+ - `credentials`
+ - : Les identifiants à utiliser pour cette requête : `omit`, `same-origin`, ou `include`. Pour envoyer automatiquement les cookies pour le domaine actuel, cette option doit être définie. À partir de Chrome 50, cette propriété peut aussi prendre un objet {{domxref("FederatedCredential")}} ou une instance de {{domxref("PasswordCredential")}}.
+ - `cache`
+ - : Le comportement du cache pour cette requête : `default`, `no-store`, `reload`, `no-cache`, `force-cache`, ou `only-if-cached`.
+ - `redirect`
+ - : Le mode de redirection à adopter pour cette requête : `follow` (suivre les redirections automatiquement), `error` (abandonner avec une erreur si une redirection a lieu), ou `manual` (gérer les redirections manuellement). Dans Chrome, la valeur par défaut était `follow` avant Chrome 47, mais à partir de cette version, c'est `manual`.
+ - `referrer`
+ - : Un USVString qui vaut `no-referrer`, `client`, ou qui contient une URL. La valeur par défaut est `client`.
+ - `referrerPolicy`
+ - : Spécifie la valeur de l'entête HTTP referer. Cela peut être `no-referrer`, `no-referrer-when-downgrade`, `origin`, `origin-when-cross-origin` ou `unsafe-url`.
+ - `integrity`
+ - : Contient la valeur de [l'intégrité de la sous-ressource](/fr/docs/Web/Security/Subresource_Integrity) de la requête (par exemple, `sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=`).
+ - `keepalive`
+ - : Peut être utilisée pour autoriser la requête à se poursuivre après la fermeture de la page. Une requête avec ce paramètre est équivalente à l'API {{domxref("Navigator.sendBeacon()")}}.
+ - `signal`
+ - : Une instance de {{domxref("AbortSignal")}} vous permettant de communiquer avec une requête et de l'interrompre si vous le souhaitez via un {{domxref("AbortController")}}.
- <dt><code>cache</code></dt>
- <dd>Le comportement du cache pour cette requête : <code>default</code>, <code>no-store</code>, <code>reload</code>, <code>no-cache</code>, <code>force-cache</code>, ou <code>only-if-cached</code>.</dd>
+### Valeur retournée
- <dt><code>redirect</code></dt>
- <dd>Le mode de redirection à adopter pour cette requête : <code>follow</code> (suivre les redirections automatiquement), <code>error</code> (abandonner avec une erreur si une redirection a lieu), ou <code>manual</code> (gérer les redirections manuellement). Dans Chrome, la valeur par défaut était <code>follow</code> avant Chrome 47, mais à partir de cette version, c'est <code>manual</code>.</dd>
+Une {{domxref("Promise")}} qui se résoud avec un object {{domxref("Response")}}.
- <dt><code>referrer</code></dt>
- <dd>Un USVString qui vaut <code>no-referrer</code>, <code>client</code>, ou qui contient une URL. La valeur par défaut est <code>client</code>.</dd>
+### Exceptions
- <dt><code>referrerPolicy</code></dt>
- <dd>Spécifie la valeur de l'entête HTTP referer. Cela peut être <code>no-referrer</code>, <code>no-referrer-when-downgrade</code>, <code>origin</code>, <code>origin-when-cross-origin</code> ou <code>unsafe-url</code>.</dd>
+- `AbortError`
+ - : La requête a été interrompue à cause d'un appel à la méthode {{domxref("AbortController.abort", "abort()")}} de {{domxref("AbortController")}}.
+- `TypeError`
+ - : L'URL spécifié inclut des identifiants. Ces informations devraient plutôt être fournises via l'en-tête HTTP {{HTTPHeader("Authorization")}}.
- <dt><code>integrity</code></dt>
- <dd>Contient la valeur de <a href="/fr/docs/Web/Security/Subresource_Integrity">l'intégrité de la sous-ressource</a> de la requête (par exemple, <code>sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=</code>).</dd>
+## Exemple
- <dt><code>keepalive</code></dt>
- <dd>Peut être utilisée pour autoriser la requête à se poursuivre après la fermeture de la page. Une requête avec ce paramètre est équivalente à l'API {{domxref("Navigator.sendBeacon()")}}.</dd>
+Dans notre [exemple de requête avec fetch](https://github.com/mdn/fetch-examples/tree/gh-pages/fetch-request) (voir [cet exemple en direct](http://mdn.github.io/fetch-examples/fetch-request/)) nous créons une nouvelle {{domxref("Request")}} avec le constructeur correspondant, puis on l'envoie en appellant `fetch()`. Comme nous récupérons une image, nous utilisons la méthode {{domxref("Body.blob()")}} sur la réponse pour lui donner le bon type MIME pour qu'elle soit gérée correctement, puis l'on crée l'URL correspondant à cet objet et on l'affiche dans un élément {{htmlelement("img")}}.
- <dt><code>signal</code></dt>
- <dd>Une instance de {{domxref("AbortSignal")}} vous permettant de communiquer avec une requête et de l'interrompre si vous le souhaitez via un {{domxref("AbortController")}}.</dd>
- </dl>
-</dd>
-</dl>
-
-<h3 id="Valeur_retournée">Valeur retournée</h3>
-
-<p>Une {{domxref("Promise")}} qui se résoud avec un object {{domxref("Response")}}.</p>
-
-<h3 id="Exceptions">Exceptions</h3>
-
-<dl>
- <dt><code>AbortError</code></dt>
- <dd>La requête a été interrompue à cause d'un appel à la méthode {{domxref("AbortController.abort", "abort()")}} de {{domxref("AbortController")}}.</dd>
- <dt><code>TypeError</code></dt>
- <dd>L'URL spécifié inclut des identifiants. Ces informations devraient plutôt être fournises via l'en-tête HTTP {{HTTPHeader("Authorization")}}.</dd>
-</dl>
-
-<h2 id="Exemple">Exemple</h2>
-
-<p>Dans notre <a href="https://github.com/mdn/fetch-examples/tree/gh-pages/fetch-request">exemple de requête avec fetch</a> (voir <a href="http://mdn.github.io/fetch-examples/fetch-request/">cet exemple en direct</a>) nous créons une nouvelle {{domxref("Request")}} avec le constructeur correspondant, puis on l'envoie en appellant <code>fetch()</code>. Comme nous récupérons une image, nous utilisons la méthode {{domxref("Body.blob()")}} sur la réponse pour lui donner le bon type MIME pour qu'elle soit gérée correctement, puis l'on crée l'URL correspondant à cet objet et on l'affiche dans un élément {{htmlelement("img")}}.</p>
-
-<pre class="brush: js">const monImage = document.querySelector('img');
+```js
+const monImage = document.querySelector('img');
let maRequete = new Request('fleurs.jpg');
@@ -117,11 +98,13 @@ fetch(maRequete)
.then(function(reponse) {
let URLobjet = URL.createObjectURL(reponse);
monImage.src = URLobjet;
-});</pre>
+});
+```
-<p>Dans notre <a href="https://github.com/mdn/fetch-examples/tree/gh-pages/fetch-with-init-then-request">exemple fetch avec initialisation et requête</a> (voir <a href="http://mdn.github.io/fetch-examples/fetch-with-init-then-request/">cet exemple en direct</a>) nous faisons la même chose à la différence que nous passons aussi un objet d'initalisation à la méthode <code>fetch</code> :</p>
+Dans notre [exemple fetch avec initialisation et requête](https://github.com/mdn/fetch-examples/tree/gh-pages/fetch-with-init-then-request) (voir [cet exemple en direct](http://mdn.github.io/fetch-examples/fetch-with-init-then-request/)) nous faisons la même chose à la différence que nous passons aussi un objet d'initalisation à la méthode `fetch` :
-<pre class="brush: js">const monImage = document.querySelector('img');
+```js
+const monImage = document.querySelector('img');
let mesEntetes = new Headers();
mesEntetes.append('Content-Type', 'image/jpeg');
@@ -135,15 +118,19 @@ let maRequete = new Request('fleurs.jpg');
fetch(maRequete, monInit).then(function(reponse) {
...
-});</pre>
+});
+```
-<p>Notez que vous pouvez aussi passer l'objet d'initialisation au constructeur de la requête pour obtenir le même effet, par exemple :</p>
+Notez que vous pouvez aussi passer l'objet d'initialisation au constructeur de la requête pour obtenir le même effet, par exemple :
-<pre class="brush: js">let maRequete = new Request('fleurs.jpg', monInit);</pre>
+```js
+let maRequete = new Request('fleurs.jpg', monInit);
+```
-<p>Vous pouvez aussi utiliser un objet litéral comme en-têtes dans votre objet d'initalisation.</p>
+Vous pouvez aussi utiliser un objet litéral comme en-têtes dans votre objet d'initalisation.
-<pre class="brush: js">const monInit = { method: 'GET',
+```js
+const monInit = { method: 'GET',
headers: {
'Content-Type': 'image/jpeg'
},
@@ -151,44 +138,23 @@ fetch(maRequete, monInit).then(function(reponse) {
cache: 'default' };
let maRequete = new Request('fleurs.jpg', monInit);
-</pre>
-
-<h2 id="Spécifications">Spécifications</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specification</th>
- <th scope="col">Statut</th>
- <th scope="col">Commentaire</th>
- </tr>
- <tr>
- <td>{{SpecName('Fetch','#fetch-method','fetch()')}}</td>
- <td>{{Spec2('Fetch')}}</td>
- <td>Définie dans un <code>WindowOrWorkerGlobalScope</code> dans la nouvelle spécification.</td>
- </tr>
- <tr>
- <td>{{SpecName('Fetch','#dom-global-fetch','fetch()')}}</td>
- <td>{{Spec2('Fetch')}}</td>
- <td>Définition initiale</td>
- </tr>
- <tr>
- <td>{{SpecName('Credential Management')}}</td>
- <td>{{Spec2('Credential Management')}}</td>
- <td>Ajoute la possiblité d'utiliser une instance de {{domxref("FederatedCredential")}} ou de {{domxref("PasswordCredential")}} comme valeur de <code>init.credentials</code>.</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
-
-<p>{{Compat("api.WindowOrWorkerGlobalScope.fetch")}}</p>
-
-<h2 id="Voir_aussi">Voir aussi</h2>
-
-<ul>
- <li><a href="/fr/docs/Web/API/Fetch_API">Fetch API</a></li>
- <li><a href="/fr/docs/Web/API/Service_Worker_API">ServiceWorker API</a></li>
- <li><a href="/fr/docs/HTTP/Access_control_CORS">HTTP access control (CORS)</a></li>
- <li><a href="/fr/docs/HTTP">HTTP</a></li>
-</ul>
+```
+
+## Spécifications
+
+| Specification | Statut | Commentaire |
+| -------------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| {{SpecName('Fetch','#fetch-method','fetch()')}} | {{Spec2('Fetch')}} | Définie dans un `WindowOrWorkerGlobalScope` dans la nouvelle spécification. |
+| {{SpecName('Fetch','#dom-global-fetch','fetch()')}} | {{Spec2('Fetch')}} | Définition initiale |
+| {{SpecName('Credential Management')}} | {{Spec2('Credential Management')}} | Ajoute la possiblité d'utiliser une instance de {{domxref("FederatedCredential")}} ou de {{domxref("PasswordCredential")}} comme valeur de `init.credentials`. |
+
+## Compatibilité des navigateurs
+
+{{Compat("api.WindowOrWorkerGlobalScope.fetch")}}
+
+## Voir aussi
+
+- [Fetch API](/fr/docs/Web/API/Fetch_API)
+- [ServiceWorker API](/fr/docs/Web/API/Service_Worker_API)
+- [HTTP access control (CORS)](/fr/docs/HTTP/Access_control_CORS)
+- [HTTP](/fr/docs/HTTP)