▶fetch的浏览器兼容

㈠fetch默认不携带cookie
⑴fetch发送请求默认是不发送cookie的,不管是同域还是跨域;
需要设置 :
fetch(url, {credentials: \'include\'})
可以配置其credentials项,其有3个值:
①omit: 默认值,忽略cookie的发送
②same-origin: 表示cookie只能同域发送,不能跨域发送
③include: cookie既可以同域发送,也可以跨域发送
⑵fetch默认对服务端通过Set-Cookie头设置的cookie也会忽略,若想选择接受来自服务端的cookie信息,也必须要配置credentials选项;
㈡fetch请求对某些错误http状态不会reject
⑴这主要是由fetch返回promise导致的,因为fetch返回的promise在某些错误的http状态下如400、500等不会reject,相反它会被resolve;
⑵只有网络错误会导致请求不能完成时,fetch 才会被 reject;所以一般会对fetch请求做一层封装
⑶示例:
function checkStatus(response) {if (response.status >= 200 && respons

本文探讨了fetch在浏览器中的兼容性问题,包括默认不携带cookie、不处理某些错误HTTP状态、不支持超时和取消操作,以及不支持JSONP和progress事件。针对这些问题,文章提出了解决方案,如设置credentials选项、自定义fetch封装以处理超时和错误、以及使用fetch-jsonp库实现JSONP功能。同时,fetch的跨域请求依赖于CORS,可以通过配置mode选项实现不同类型的跨域行为。
最低0.47元/天 解锁文章
831

被折叠的 条评论
为什么被折叠?



