Request

Этот перевод не завершен. Пожалуйста, помогите перевести эту статью с английского

The Request interface of the Fetch API represents a resource request.

You can create a new Request object using the Request() constructor, but you are more likely to encounter a Request object being returned as the result of another API operation, such as a service worker FetchEvent.request.

Constructor

Request()
Creates a new Request object.

Properties

Request.cache Только для чтения
Contains the cache mode of the request (e.g., default, reload, no-cache).
Request.context Только для чтения  
Contains the context of the request (e.g., audio, image, iframe, etc.)
Request.credentials Только для чтения
Contains the credentials of the request (e.g., "omit", "same-origin", "include"). The default is "same-origin".
Request.destination Только для чтения
Returns a string from the RequestDestination enum describing the request's destination. This is a string indicating the type of content being requested.
Request.headers Только для чтения
Contains the associated Headers object of the request.
Request.integrity Только для чтения
Contains the subresource integrity value of the request (e.g., sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=).
Request.method Только для чтения
Contains the request's method (GET, POST, etc.)
Request.mode Только для чтения
Contains the mode of the request (e.g., cors, no-cors, same-origin, navigate.)
Request.redirect Только для чтения
Contains the mode for how redirects are handled. It may be one of follow, error, or manual.
Request.referrer Только для чтения
Contains the referrer of the request (e.g., client).
Request.referrerPolicy Только для чтения
Contains the referrer policy of the request (e.g., no-referrer).
Request.url Только для чтения
Contains the URL of the request.

Request implements Body, so it also inherits the following properties:

body Только для чтения
A simple getter used to expose a ReadableStream of the body contents.
bodyUsed Только для чтения
Stores a Boolean that declares whether the body has been used in a response yet.

Methods

Request.clone()
Creates a copy of the current Request object.

Request implements Body, so it also has the following methods available to it:

Body.arrayBuffer()
Returns a promise that resolves with an ArrayBuffer representation of the request body.
Body.blob()
Returns a promise that resolves with a Blob representation of the request body.
Body.formData()
Returns a promise that resolves with a FormData representation of the request body.
Body.json()
Returns a promise that resolves with a JSON representation of the request body.
Body.text()
Returns a promise that resolves with an USVString (text) representation of the request body.

Note: The Body functions can be run only once; subsequent calls will resolve with empty strings/ArrayBuffers.

Examples

In the following snippet, we create a new request using the Request() constructor (for an image file in the same directory as the script), then return some property values of the request:

const request = new Request('https://www.mozilla.org/favicon.ico');

const URL = request.url;
const method = request.method;
const credentials = request.credentials;

You could then fetch this request by passing the Request object in as a parameter to a WindowOrWorkerGlobalScope.fetch() call, for example:

fetch(request)
  .then(response => response.blob())
  .then(blob => {
    image.src = URL.createObjectURL(blob);
  });

In the following snippet, we create a new request using the Request() constructor with some initial data and body content for an api request which need a body payload:

const request = new Request('https://example.com', {method: 'POST', body: '{"foo": "bar"}'});
 
const URL = request.url;
const method = request.method;
const credentials = request.credentials;
const bodyUsed = request.bodyUsed;

Note: The body type can only be a Blob, BufferSource, FormData, URLSearchParams, USVString or ReadableStream type, so for adding a JSON object to the payload you need to stringify that object.

You could then fetch this api request by passing the Request object in as a parameter to a WindowOrWorkerGlobalScope.fetch() call, for example and get the response:

fetch(request)
  .then(response => {
    if (response.status === 200) {
      return response.json();
    } else {
      throw new Error('Something went wrong on api server!');
    }
  })
  .then(response => {
    console.debug(response);
    // ...
  }).catch(error => {
    console.error(error);
  });

Specifications

Specification Status Comment
Fetch
Определение 'Request' в этой спецификации.
Живой стандарт Initial definition

Browser compatibility

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
Request
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка ДаFirefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 28Safari Полная поддержка 10.1WebView Android Полная поддержка 42Chrome Android Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка ДаOpera Android Полная поддержка 28Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 4.0
Request() constructor
Экспериментальная
Chrome Полная поддержка 41
Замечания
Полная поддержка 41
Замечания
Замечания From Chrome 47, default values for the init argument's properties changed. mode defaults to same-origin (from no-cors). credentials defaults to include (from same-origin). redirect defaults to follow (from manual).
Edge Полная поддержка 15Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Полная поддержка 10.1WebView Android Полная поддержка 42
Замечания
Полная поддержка 42
Замечания
Замечания From WebView 47, default values for the init argument's properties changed. mode defaults to same-origin (from no-cors). credentials defaults to include (from same-origin). redirect defaults to follow (from manual).
Chrome Android Полная поддержка 41
Замечания
Полная поддержка 41
Замечания
Замечания From Chrome 47, default values for the init argument's properties changed. mode defaults to same-origin (from no-cors). credentials defaults to include (from same-origin). redirect defaults to follow (from manual).
Firefox Android Полная поддержка ДаOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 4.0
Полная поддержка 4.0
Полная поддержка 5.0
Замечания
Замечания Some default values for the init parameter changed in Samsung Internet 5.0. See the Properties section for details.
cache
Экспериментальная
Chrome Полная поддержка 64Edge Полная поддержка 14Firefox Полная поддержка 48IE Нет поддержки НетOpera Полная поддержка 51Safari Полная поддержка 11WebView Android Полная поддержка 64Chrome Android Полная поддержка 64Firefox Android Нет поддержки НетOpera Android Полная поддержка 47Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0
clone
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки Нет
context
ЭкспериментальнаяУстаревшаяНестандартная
Chrome Нет поддержки 42 — 46Edge ? Firefox Нет поддержки 39 — 42
Замечания
Нет поддержки 39 — 42
Замечания
Замечания see bug 1188062 for more information.
IE Нет поддержки НетOpera Нет поддержки 28 — 29Safari Нет поддержки НетWebView Android Нет поддержки 42 — 46Chrome Android Нет поддержки 42 — 46Firefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Нет поддержки 4.0 — 5.0
credentials
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Полная поддержка 42Chrome Android Полная поддержка 42Firefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 4.0
destination
Экспериментальная
Chrome Полная поддержка 65Edge Полная поддержка 14Firefox Полная поддержка 61IE Нет поддержки НетOpera Полная поддержка 52Safari Полная поддержка 10.1WebView Android Полная поддержка 65Chrome Android Полная поддержка 65Firefox Android Полная поддержка 61Opera Android Полная поддержка 47Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 9.0
headers
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 42 — 46Firefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки 4.0 — 5.0
integrity
Экспериментальная
Chrome Полная поддержка 46Edge Полная поддержка 14Firefox Полная поддержка ДаIE Нет поддержки НетOpera Полная поддержка ДаSafari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Полная поддержка 46Firefox Android Нет поддержки НетOpera Android Полная поддержка ДаSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 5.0
keepalive
Экспериментальная
Chrome Полная поддержка 66Edge Полная поддержка 15Firefox ? IE Нет поддержки НетOpera Полная поддержка 43Safari Нет поддержки НетWebView Android Полная поддержка 66Chrome Android Полная поддержка 66Firefox Android ? Opera Android Полная поддержка 43Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0
method
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 42 — 46Firefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки 4.0 — 5.0
mode
Экспериментальная
Chrome Полная поддержка 42Edge Полная поддержка 14Firefox Полная поддержка 39IE Нет поддержки НетOpera Полная поддержка 29Safari Нет поддержки НетWebView Android Полная поддержка 49Chrome Android Полная поддержка 49Firefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 5.0
redirect
Экспериментальная
Chrome Полная поддержка 46Edge Полная поддержка 14Firefox Полная поддержка ДаIE Нет поддержки НетOpera Полная поддержка ДаSafari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Полная поддержка 46Firefox Android Полная поддержка ДаOpera Android Полная поддержка ДаSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 5.0
referrer
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 47IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки Нет
referrerPolicyChrome Полная поддержка 52Edge Полная поддержка 14Firefox Полная поддержка 52IE Нет поддержки НетOpera Полная поддержка 39Safari Полная поддержка 11.1WebView Android Полная поддержка 52Chrome Android Полная поддержка 52Firefox Android Полная поддержка 52Opera Android Полная поддержка 41Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 7.2
signalChrome Полная поддержка 66Edge Полная поддержка 16Firefox Полная поддержка ДаIE Нет поддержки НетOpera Полная поддержка ДаSafari ? WebView Android Полная поддержка 66Chrome Android Полная поддержка 66Firefox Android Полная поддержка ДаOpera Android Полная поддержка ДаSafari iOS ? Samsung Internet Android Полная поддержка 9.0
url
Экспериментальная
Chrome Полная поддержка 42
Замечания
Полная поддержка 42
Замечания
Замечания Fragment support added in Chrome 59.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Замечания
Полная поддержка 29
Замечания
Замечания Fragment support added in Opera 46.
Safari Полная поддержка 10.1WebView Android Полная поддержка 42
Замечания
Полная поддержка 42
Замечания
Замечания Fragment support added in Chrome 59.
Chrome Android Полная поддержка 42
Замечания
Полная поддержка 42
Замечания
Замечания Fragment support added in Chrome 59.
Firefox Android Нет поддержки НетOpera Android Полная поддержка 29
Замечания
Полная поддержка 29
Замечания
Замечания Fragment support added in Opera 46.
Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 4.0
Замечания
Полная поддержка 4.0
Замечания
Замечания Fragment support added in Samsung Internet 7.0.

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Устаревшая. Не следует использовать в новых веб-сайтах
Устаревшая. Не следует использовать в новых веб-сайтах
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

See also