📅  最后修改于: 2023-12-03 15:24:13.334000             🧑  作者: Mango
在 JavaScript 中通过 document.cookie
获取的 cookie,是浏览器中所有 cookie 的集合,包括 httponly cookie。
但是,httponly cookie 是不允许通过 JavaScript 获取的,因为 httponly 的作用就是禁止 JavaScript 访问这类 cookie,从而增强了对用户信息的保护。
虽然不能直接获取 httponly cookie 的值,但是我们可以通过简单的方法利用 XMLHttpRequest 获取这些 cookie。
下面是获取 httponly cookie 的步骤:
在后端设置 httponly cookie:
res.cookie('my_cookie', 'cookie_value', { httpOnly: true })
在前端发送 XMLHttpRequest 请求:
const xhr = new XMLHttpRequest()
xhr.open('GET', '/api/get_cookie')
xhr.onreadystatechange = () => {
if (xhr.readyState === XMLHttpRequest.DONE) {
console.log(xhr.responseText)
}
}
xhr.send()
在后端返回 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 的方法,希望对你有所帮助!