fetch

使用 Fetch

Fetch API 提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的一些具体部分,例如请求和响应。它还提供了一个全局 fetch() 方法,该方法提供了一种简单,合理的方式来跨网络异步获取资源。

这种功能以前是使用 XMLHttpRequest 实现的。Fetch 提供了一个更理想的替代方案,可以很容易地被其他技术使用,例如  Service Workers (en-US)。Fetch 还提供了专门的逻辑空间来定义其他与 HTTP 相关的概念,例如 CORS 和 HTTP 的扩展。

请注意,fetch 规范与 jQuery.ajax() 主要有三种方式的不同:

  • 当接收到一个代表错误的 HTTP 状态码时,从 fetch() 返回的 Promise 不会被标记为 reject, 即使响应的 HTTP 状态码是 404 或 500。相反,它会将 Promise 状态标记为 resolve (但是会将 resolve 的返回值的 ok 属性设置为 false ),仅当网络故障时或请求被阻止时,才会标记为 reject。
  • fetch() 可以不会接受跨域 cookies;你也可以不能使用 fetch() 建立起跨域会话。
  • fetch 不会发送 cookies。除非你使用了credentials 的初始化选项。(自 2017 年 8 月 25 日以后,默认的 credentials 政策变更为 same-origin。Firefox 也在 61.0b13 版本中进行了修改)

 

 

 

Response 对象

如上所述,Response 实例是在 fetch() 处理完 promise 之后返回的。

你会用到的最常见的 response 属性有:

  • Response.status — 整数(默认值为200)为response的状态码。
  • Response.statusText — 字符串(默认值为"OK"),该值与 HTTP 状态码消息对应。
  • Response.ok — 如上所示,该属性是来检查response的状态是否在 200 - 299(包括200 和 299)这个范围内。该属性返回一个布尔值 (en-US)

它的实例也可用通过 JavaScript 来创建,但只有在 ServiceWorkers (en-US) 中才真正有用,当使用 respondWith() 方法并提供了一个自定义的 response 来接受 request 时:

 

 

 

 

posted @ 2021-11-23 11:24  京京吖!  阅读(422)  评论(0编辑  收藏  举报