在MDN Fetch API页面(Sending a request with credentials included部分)上写道:
相反,要确保浏览器不在请求中包含凭据,请使用凭据:'省略'。
fetch('https://example.com', {
credentials: 'omit'
})
但是,最初,它还写道:
默认情况下,fetch不会从服务器发送或接收任何cookie,如果站点依赖于维护用户会话,则会导致未经身份验证的请求(要发送cookie,必须设置凭证init选项)。
我的问题是,如果我想省略cookie和auth标题,如果默认情况下(如果没有credentials: 'omit'
)写的话,我为什么要先使用credentials
,fetch
不会发送cookie?
由于对whatwg/fetch的讨论,2017年底默认值从omit
变为same-origin
。
浏览器在2018年迎头赶上,所以你可以看到一些旧的浏览器仍然使用omit
。例如,Firefox从61开始从omit
更改为same-origin
。Chrome已从版本72更改。您可以查看完整列表here。
更有趣的是,whatwg page(最后更新时间为2019年3月23日)的标准仍然是omit
。