在chrome73中,使用未设置凭据的抓取操作时,请求标头意外地将cookie带到服务器上
当我使用chrome 64
时,看起来很好,这是我的代码:
fetch(url, {
method: 'GET'
}).then(res => res.json())
在chrome73中,在没有设置凭据的情况下使用抓取操作时,请求标头无法将cookie带到服务器上
答案 0 :(得分:0)
/* Must check Option YourObject.findById(id).isPresent()
exemple
public YourObject getYourObject(Long id) {
if (id == null) {
return null;
}
return objectRepository.findById(id).isPresent() ?
objectRepository.findById(id).get(): null;
}
*/
的默认行为在版本之间已更改。
如果您检出the docs for the fetch
polyfil,其中会有一个部分显示:
凭据的默认值为
fetch
。但是,凭据的默认值并不总是相同。以下版本的浏览器实现了旧版本的访存规范,其中默认值为
"same-origin"
:
- Firefox 39-60
- Chrome 42-67
- Safari 10.1-11.1.2
如果您针对这些浏览器,建议始终指定凭据:
"omit"
显式地包含所有提取请求,而不要依赖默认值:'same-origin'
所以您在Chrome 64中看到的旧行为是因为它默认为fetch('/users', {
credentials: 'same-origin'
})
,但在Chrome 73中现在默认为"omit"
。
如果要保持这种行为,则应明确指定"same-origin"
,以便无论浏览器是什么版本,其行为都相同。