Response: type 属性

Baseline 已广泛支持

此特性已得到良好确立,可跨多种设备和浏览器版本使用。自 2017 年 3 月起,所有浏览器均支持此特性。

注意:此功能在 Web Workers 中可用。

Response 接口中只读的 type 属性包含响应的类型。该类型决定了脚本是否能够访问响应体和响应头。

一个字符串,可以是以下任何值

basic

这适用于以下任何情况

  • 请求是同源的。
  • 请求的 URL 方案是 data:
  • 请求的 modenavigatewebsocket

在此类型下,所有响应头都暴露,除了 Set-Cookie

cors

请求是跨域的,并且已使用 CORS 成功处理。在此类型下,只暴露 CORS 安全列表响应头

error

发生了网络错误。status 属性设置为 0bodynull,头部为空且不可变。

这是由 Response.error() 返回的响应类型。调用 fetch() 不会返回此类型的响应,因为如果发生网络错误,Promise 会被拒绝。

opaque

对模式设置为 no-cors 的跨域请求的响应。status 属性设置为 0bodynull,头部为空且不可变。

opaqueredirect

对重定向选项设置为 manual 的请求的响应,并且该请求已被服务器重定向。status 属性设置为 0bodynull,头部为空且不可变。

示例

一个 basic 响应

以下同源请求将返回一个 basic 响应

js
const response = await fetch("flowers.jpg");

console.log(response.type); // "basic"

一个 CORS 响应

假设 https://example.org 不是请求者所在的域,并且服务器响应了适当的 CORS 头部,此请求将返回一个 cors 响应

js
const response = await fetch("https://example.org/flowers.jpg");

console.log(response.type); // "cors"

一个 opaque 响应

以下请求是使用 no-cors 选项发起的,因此它返回一个 opaque 响应

js
const response = await fetch("https://example.org/flowers.jpg", {
  mode: "no-cors",
});

console.log(response.type); // "opaque"
console.log(response.body); // null
console.log(response.status); // 0

一个 error 响应

以下代码使用 Response.error() 创建了一个 error 响应

js
const response = Response.error();

console.log(response.type); // "error"
console.log(response.body); // null
console.log(response.status); // 0

规范

规范
Fetch
# dom-response-type

浏览器兼容性

另见