📜  如何在 javascript 中获取 httponly cookie(1)

📅  最后修改于: 2023-12-03 15:24:13.334000             🧑  作者: Mango

如何在 JavaScript 中获取 httponly cookie

在 JavaScript 中通过 document.cookie 获取的 cookie,是浏览器中所有 cookie 的集合,包括 httponly cookie。

但是,httponly cookie 是不允许通过 JavaScript 获取的,因为 httponly 的作用就是禁止 JavaScript 访问这类 cookie,从而增强了对用户信息的保护。

虽然不能直接获取 httponly cookie 的值,但是我们可以通过简单的方法利用 XMLHttpRequest 获取这些 cookie。

下面是获取 httponly cookie 的步骤:

  1. 后端设置 httponly cookie

在后端设置 httponly cookie:

res.cookie('my_cookie', 'cookie_value', { httpOnly: true })
  1. 前端发送 XMLHttpRequest

在前端发送 XMLHttpRequest 请求:

const xhr = new XMLHttpRequest()

xhr.open('GET', '/api/get_cookie')
xhr.onreadystatechange = () => {
  if (xhr.readyState === XMLHttpRequest.DONE) {
    console.log(xhr.responseText)
  }
}
xhr.send()
  1. 后端返回 httponly cookie

在后端返回 httponly 的 cookie:

app.get('/api/get_cookie', (req, res) => {
  const { headers: { cookie } } = req
  res.send(cookie)
})

由于 httponly cookie 是无法通过 JavaScript 直接获取的,我们只能通过 XMLHttpRequest 的方式来获取这些 cookie。上述代码将 httponly cookie 通过服务器返回到了前端,从而达到获取 httponly cookie 的效果。

注意: 这种方法仅适用于当前域名下的 httponly cookie。如果你需要获取跨域名的 httponly cookie,需要使用第三方 JavaScript 库,比如 js-cookie 等。

以上是获取 httponly cookie 的方法,希望对你有所帮助!