浏览器并不保证发送一个http request
在网速慢的情况下,离开一个页面时,浏览器并不会保证这个 http request 一定会发送成功
为什么浏览器取消了 http request
怎么办呢
fetch + keepalive
- 可以自主定义 request header
- 可以发送一个 get
- 兼容老版本浏览器(配合fetch补丁) ```javascript etch(“/log”, { method: “POST”, headers: { “Content-Type”: “application/json” }, body: JSON.stringify({ some: “data” }), keepalive: true });
<a name="yhp8T"></a>
## Navigator.sendBeacon()
1. 简单不需要定制头部
1. 更简洁的API
1. 希望请求不与应用中其他优先级更高的http request竞争
```javascript
const blob = new Blob([JSON.stringify({ some: "data" })], { type: 'application/json; charset=UTF-8' });
navigator.sendBeacon('/log', blob);