如何使用带有httpOnly cookie或basic auth的window.fetch()

Dam*_*enn 20 javascript cookies dom basic-authentication fetch-api

我在Firefox和Chrome中使用window.fetch().出于某些原因,fetch()不会发送任何cookie.现在这不会成为问题,因为我可以使用它们发送它们

fetch('/something', { headers: { Cookie: document.cookie } })
Run Code Online (Sandbox Code Playgroud)

但这不适用于httpOnly cookie.

Dam*_*enn 48

好的,我在阅读Mozilla开发者网络后发现了一点,并尝试了凭证选项.

看起来像凭证选项是我应该寻找的.

fetch('/something', { credentials: 'same-origin' }) // or 'include'
Run Code Online (Sandbox Code Playgroud)

将发送cookie.

  • 这是MDN文章. - https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials`'undit'`是默认值,不发送任何cookie.如果端点位于同一个uri上,''same-origin'`将发送cookie.`'include'`将向所有uris发送cookies. (7认同)
  • 在最近的浏览器中,'same-origin' 成为默认值,但可以明确地编写它以实现向后兼容性。在 Firefox 中,此默认值来自版本 61(2018 年 6 月 26 日发布)。 (2认同)
  • 这对于 httpOnly cookie 仍然不起作用,但这很好。 (2认同)