在chrome73中,使用未设置凭据的抓取操作时,请求标头意外地将cookie带到服务器

时间:2019-04-02 16:02:58

标签: google-chrome cookies

在chrome73中,使用未设置凭据的抓取操作时,请求标头意外地将cookie带到服务器上

当我使用chrome 64时,看起来很好,这是我的代码:

fetch(url, {
    method: 'GET'
}).then(res => res.json())

在chrome73中,在没有设置凭据的情况下使用抓取操作时,请求标头无法将cookie带到服务器上

enter image description here

1 个答案:

答案 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",以便无论浏览器是什么版本,其行为都相同。