Request()
=========

Le constructeur **`Request()`** crée un nouvel objet `Request`.

Syntaxe
-------


```js
var maRequete = new Request(entree[, init]);
```

### Paramètres

*entree*

Définit la ressource que vous souhaitez récupérer. Cela peut être soit :

* Une `USVString` contenant l'URL directe de la ressource que vous voulez récupérer.
* Un objet `Request`, ce qui crée en fait une copie. Notez les mises à jour de comportement suivantes pour conserver la sécurité, tout en rendant le constructeur moins susceptible de déclencher des exceptions :
    + Si cet objet existe depuis une autre origine lors de l'appel du constructeur, le `Request.referrer` (en-US) est enlevé.
    + Si cet objet a un `Request.mode` à `navigate`, la valeur de `mode` est convertie en `same-origin`.

*init* Facultatif

Un objet d'options contenant tous les paramètres personnalisés que vous voulez appliquer à la requête. Les options possibles sont :

* `method`: La méthode de la requête, par ex., `GET`, `POST`.
* `headers`: Tous les entêtes que vous voulez ajouter à votre requête, contenus dans un objet `Headers` ou un littéral d'objet avec des valeurs `ByteString`.
* `body`: Tout corps que vous voulez ajouter à votre requête : cela peut être un objet `Blob`, `BufferSource`, `FormData`, `URLSearchParams`, `USVString` ou `ReadableStream` (en-US). Notez qu'une requête utilisant la méthode GET ou HEAD ne peut pas avoir de corps .
* `mode`: Le mode que vous souhaitez utiliser pour la requête, par exemple, `cors`, `no-cors`, `same-origin`, ou `navigate`. La valeur par défaut est `cors`. Dans Chrome, la valeur par défaut est `no-cors` avant Chrome 47 et `same-origin` à partir de Chrome 47.
* `credentials`: Les informations d'authentification de requête que vous souhaitez utiliser pour la requête : `omit`, `same-origin`, ou `include`. La valeur par défaut est `omit`. Dans Chrome, la valeur par défaut est `same-origin` avant Chrome 47 et `include` à partir de Chrome 47.
* `cache`: Le mode de cache (en-US) que vous voulez utiliser pour la requête.
* `redirect`: Le mode de redirection à utiliser : `follow`, `error`, ou `manual`. Dans Chrome, le défaut est `manual` avant Chrome 47 et `follow` à partir de Chrome 47.
* `referrer`: Une `USVString` indiquant `no-referrer`, `client`, ou une URL. La valeur par défaut est `client`.
* `integrity`: Contient la valeur d'intégrité de la sous ressource de la requête (par ex.., `sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=`).

Erreurs
-------

| **Type** | **Description** |
| --- | --- |
| `TypeError` | Depuis Firefox 43 (en-US), `Request()` déclenchera une TypeError si l'URL contient des informations d'authentification, comme dans `http://user:password@example.com`. |

Exemple
-------

Dans notre exemple de Fetch Request (voir Fetch Request en direct), nous créons un nouvel objet `Request` en utilisant le constructeur, puis nous le récupérons en utilisant un appel à `GlobalFetch.fetch`. Puisque nous récupérons une image, nous lançons `Body.blob` (en-US) sur la réponse pour lui donner le bon type MIME afin qu'il soit géré correctement, puis nous en créons une

Object URL et nous l'affichons dans un élément `<img>`.


```js
var monImage = document.querySelector("img");

var maRequete = new Request("fleurs.jpg");

fetch(maRequete)
  .then(function (reponse) {
    return reponse.blob();
  })
  .then(function (reponse) {
    var URLdobjet = URL.createObjectURL(reponse);
    monImage.src = URLdobjet;
  });
```


Dans notre exemple de Fetch Request avec init (see Fetch Request init en direct), nous faisons la même chose, excepté que nous passons un objet init quand nous invoquons `fetch()`:


```js
var monImage = document.querySelector('img');

var mesEntetes = new Headers();
mesEntetes.append('Content-Type', 'image/jpeg');

var monInit = { method: 'GET',
               headers: mesEntetes,
               mode: 'cors',
               cache: 'default' };

var maRequete = new Request('fleurs.jpg',monInit);

fetch(maRequete).then(function(reponse) {
  ...
});
```


Notez que vos pouvez aussi passer l'objet init dans l'appel à `fetch` pour obtenir le même résultat, par ex. :


```js
fetch(maRequete,monInit).then(function(reponse) {
  ...
});
```


Vous pouvez aussi utilier un littéral d'objet tel que `headers` dans `init`.


```js
var monInit = {
  method: "GET",
  headers: {
    "Content-Type": "image/jpeg",
  },
  mode: "cors",
  cache: "default",
};

var maRequete = new Request("fleurs.jpg", monInit);
```


Vous pouvez aussi passer un objet `Request` au constructeur `Request()` pour créer une copie de la Request (c'est similaire au fait d'appeler la méthode `clone()` (en-US)).


```js
var copie = new Request(maRequete);
```


**Note :** Cette dernière utilisation n'est probablement utile que dans ServiceWorkers (en-US).

Spécifications
--------------

| Specification |
| --- |
| Fetch Standard # ref-for-dom-request① |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'API ServiceWorker (en-US)
* Le contrôle d'accès HTTP (CORS)
* HTTP