设置一个 HttpOnly 的 cookie 意味着该 cookie 不能通过客户端脚本(如 JavaScript)进行访问。这是一个安全措施,通常用于减少某些类型的攻击,如跨站脚本攻击 (XSS)。
以下是如何在不同的上下文中设置 HttpOnly cookie:
1. 在 HTTP 响应中:
如果你正在使用纯 HTTP/HTTPS(没有特定的后端语言或框架),你可以在 HTTP 响应的 Set-Cookie 头中设置 HttpOnly 属性:
Set-Cookie: mycookie=myvalue; HttpOnly;
2. 使用特定的后端语言或框架:
PHP:
setcookie('mycookie', 'myvalue', 0, '/', '', false, true);
Node.js (Express.js):
res.cookie('mycookie', 'myvalue', { httpOnly: true });
Python (Flask):
response.set_cookie('mycookie', 'myvalue', httponly=True)
Python (Django):
response.set_cookie('mycookie', 'myvalue', httponly=True)
Java (Servlet):
Cookie myCookie = new Cookie("mycookie", "myvalue");
myCookie.setHttpOnly(true);
response.addCookie(myCookie);
3. 在 Web 浏览器扩展中(如 Chrome Extensions):
如果你使用 chrome.cookies.set API 设置 cookie,你可以设置 httpOnly 属性为 true:
chrome.cookies.set({
url: 'https://www.example.com',
name: 'mycookie',
value: 'myvalue',
httpOnly: true
});
请注意,当你设置一个 HttpOnly 的 cookie,你不能再通过 JavaScript 的 document.cookie 在客户端读取或修改它。这就是 HttpOnly 属性的目的:防止客户端脚本访问某些敏感的 cookie,从而增加安全性。
如何使用js-cookie设置cookie的httpOnly属性
//设置
Cookie.set(TokenKey,token,{httpOnly:true})
//注意:设置httpOnly之后根据浏览器安全策略,只能通过请求地址获取请求头中的cookie,Cookie.get()方式等读写均获取不到