标签题目
Cookie/Session相关面试题
Cookie 有哪些常见属性?
Cookie 常见属性包括 Name、Value、Domain、Path、Expires、Max-Age、Secure、HttpOnly、SameSite、Priority、Partitioned 等。它们共同决定 Cookie 的内容、有效期、发送范围、安全边界和跨站行为,是登录态、个性化和安全防护中的基础机制。
如何确保cookie不重复?
确保 cookie 不重复,不能只理解为 cookie 名字不要重复。浏览器实际以 name、Domain、Path 作为主要唯一键;同一组键再次 Set-Cookie 会覆盖旧值,但同名 cookie 如果 Domain 或 Path 不同,可以同时存在,并在请求时一起进入 Cookie 请求头。面试中应回答:统一 cookie 的 name、Domain、Path,更新时使用相同属性覆盖;清理历史重复项时按旧 Domain/Path 组合逐个过期;服务端用高熵随机值和存储层唯一约束保证 sessionId/token 唯一。
如何从后端角度控制cookie的域?
从后端角度控制 cookie 的域,核心是在 HTTP 响应头 Set-Cookie 中设置 Domain 属性。后端只能把 cookie 设置到当前请求主机本身,或其合法父域,不能随意设置到无关域名。是否能被后续请求携带,还受 Domain、Path、Secure、SameSite、浏览器公共后缀规则以及跨站请求策略共同影响。
计算机网络: HTTP为什么说是无状态的?
HTTP 被称为无状态协议,核心含义是协议本身不会在服务端自动保存两次请求之间的业务上下文。每个请求都应携带足够的信息,让服务端独立理解并处理它。登录态、购物车、个性化配置等连续业务能力并不是 HTTP 天生具备的,而是通过 Cookie、Session、JWT、数据库或缓存等应用层机制补上的。
session的原理?
Session 的核心是用服务端状态弥补 HTTP 无状态。服务端生成随机 session id 并保存会话数据,客户端通常用 Cookie 携带这个 id,后续请求由服务端查会话存储恢复用户身份、权限和临时状态。
跨域请求需要携带 Cookie 时,前端该怎么设置?
前端请求不一定必须携带 Cookie。是否携带取决于业务是否依赖 Cookie 做登录态、会话、灰度、风控等状态识别,以及浏览器、前端请求配置、Cookie 属性和服务端 CORS 配置是否同时满足条件。跨域场景下,前端单独设置不够,必须前后端配合:前端开启 credentials,服务端允许带凭证,并返回精确的 Access-Control-Allow-Origin 和 Access-Control-Allow-Credentials。