使用 Fetch
Fetch API
提供了一个 JavaScript接口,用于访问和操纵HTTP管道的部分,例如请求和响应。它还提供了一个全局 fetch()
方法,该方法提供了一种简单,合理的方式来跨网络异步获取资源。
这种功能以前是使用 XMLHttpRequest
实现的。Fetch
提供了一个更好的替代方法,可以很容易地被其他技术使用,例如 Service Workers
。Fetch
还提供了单个逻辑位置来定义其他HTTP相关概念,例如CORS和HTTP的扩展。
请注意,fetch规范与jQuery.ajax()主要有两种方式的不同,牢记:
当接收到一个代表错误的 HTTP 状态码时,从 fetch()
返回的 Promise 不会被标记为 reject, 即使该 HTTP 响应的状态码是 404
或 500
。相反,它会将 Promise 状态标记为 resolve
(但是会将 resolve
的返回值的 ok 属性设置为 false
),仅当网络故障时或请求被阻止时,才会标记为reject
。
默认情况下,fetch
不会从服务端发送或接收任何 cookies
, 如果站点依赖于用户 session
,则会导致未经认证的请求(要发送 cookies
,必须设置 credentials
选项)。自从2017年8月25日后,默认的credentials
政策变更为same-origin
Firefox也在61.0b13中改变默认值
另外:使用Fetch进行网络接口请求,默认不带cookie,这一点是需要特别注意的。
详情直接转入文档~