Response: type property

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

The type read-only property of the Response interface contains the type of the response. It can be one of the following:

  • basic: Normal, same origin response, with all headers exposed except "Set-Cookie".
  • cors: Response was received from a valid cross-origin request. Certain headers and the body may be accessed.
  • error: Network error. No useful information describing the error is available. The Response's status is 0, headers are empty and immutable. This is the type for a Response obtained from Response.error().
  • opaque: Response for "no-cors" request to cross-origin resource. Severely restricted.
  • opaqueredirect: The fetch request was made with redirect: "manual". The Response's status is 0, headers are empty, body is null and trailer is empty.

Note: An "error" Response never really gets exposed to script: such a response to a fetch() would reject the promise.


A ResponseType string indicating the type of the response.


In our Fetch Response example (see Fetch Response live) we create a new Request object using the Request() constructor, passing it a JPG path. We then fetch this request using fetch(), extract a blob from the response using Response.blob, create an object URL out of it using URL.createObjectURL(), and display this in an <img>.

Note that at the top of the fetch() block we log the response type to the console.

const myImage = document.querySelector("img");

const myRequest = new Request("flowers.jpg");

  .then((response) => {
    console.log("response.type =", response.type); // response.type = 'basic'
    return response.blob();
  .then((myBlob) => {
    const objectURL = URL.createObjectURL(myBlob);
    myImage.src = objectURL;


Fetch Standard
# ref-for-dom-response-type①

Browser compatibility

BCD tables only load in the browser

See also