服务端2月24日 22:24
Cookie 浏览器兼容有哪些差异?如何处理?Cookie 浏览器兼容差异主要集中在容量限制、SameSite 默认值、第三方 Cookie、隐私保护策略和过期时间。现在不能再假设“所有浏览器都会长期保存并发送 Cookie”:Safari 的 ITP、Firefox 的 ETP、Chrome 的第三方 Cookie 收紧都会影响跨站登录、埋点和广告归因。处理思路是默认一方 Cookie、SameSite=Lax、Secure 开启,跨站场景单独设计降级方案。
## 追问
### 各浏览器容量差异要怎么记?
单个 Cookie 通常按 4KB 估算,每个域名数量上限各家不同。面试里不必背精确数字,关键是不要依赖“能存很多”,超过少...服务端2月24日 22:24
Cookie 的 Domain 和 Path 有什么作用?如何设置?Cookie 的 Domain 决定哪些域名会收到它,Path 决定哪些路径会收到它。默认不写 Domain 时,Cookie 通常只属于当前 host;写成父域如 `example.com` 时,子域也可能共享。Path 是路径前缀匹配,不是权限隔离,主要用于减少无关请求携带 Cookie。正确做法是按最小范围设置,登录态、后台、支付、静态资源不要混用一个宽泛 Cookie。
## 追问
### 不写 Domain 和写 Domain 有什么区别?
不写 Domain 更收敛,通常只给当前主机使用。写父域会扩大到子域,适合 SSO,但也扩大了泄露和冲突范围。现在前导点 `.examp...服务端2月24日 22:26
Cookie 性能如何优化?怎样减少大小和数量?Cookie 性能优化的核心是少带、少存、少匹配。因为同域请求会自动携带匹配 Cookie,Cookie 越多,请求头越大,移动网络和高并发接口越容易被拖慢。实战里优先把会话凭证保留在 Cookie,把偏好、缓存、草稿这类非敏感数据迁到 localStorage、sessionStorage 或 IndexedDB;同时收窄 Domain、Path,避免静态资源和无关接口也背着 Cookie 跑。
## 追问
### Cookie 为什么会影响接口性能?
每次 HTTP 请求都会带上匹配的 Cookie。即使只是请求一张图片,只要域名和路径匹配,也可能多传几 KB 请求头。HTTP/2...服务端2月24日 22:42
iframe 如何用 postMessage 实现安全跨域通信?iframe 跨域通信用 `window.postMessage`:父页拿到 iframe 的 `contentWindow` 发消息,子页用 `window.parent.postMessage` 回消息,双方用 `message` 事件接收。安全重点只有两句:发送时别乱用 `*`,接收时必须校验 `event.origin` 和 `event.data`,否则任何页面都可能伪造消息触发你的逻辑。
## 追问
### postMessage 为什么能跨域?
它是浏览器提供的受控跨文档通信 API,不直接暴露 DOM,只传递结构化克隆后的数据,所以绕开的是直接访问限制,不是绕开安全校验...服务端2月24日 22:43
iframe 的 sandbox 有什么作用?如何安全配置权限?iframe 的 sandbox 是给嵌入页面加一层浏览器级限制:默认禁止脚本、表单、弹窗、顶层跳转,并把内容放进独立的特殊源。安全配置的原则是先空 sandbox,再按功能逐项放开;最危险的组合是同源页面同时给 `allow-scripts` 和 `allow-same-origin`,子页面可能移除 sandbox 或访问同源能力。
## 追问
### 空 sandbox 和不写 sandbox 有什么区别?
空 sandbox 是最严格模式;不写 sandbox 等于 iframe 按普通页面运行。第三方、不可信 HTML、广告位优先用空 sandbox。
### 常用权限怎么...服务端2月24日 22:44
iframe 对 SEO 有什么影响?如何优化才更友好?iframe 对 SEO 的主要影响是:父页面不一定能继承 iframe 内内容的索引价值,搜索引擎可能把 iframe 地址当成独立页面处理;对百度等爬虫来说,重要内容放在 iframe 里更容易漏抓。优化原则很简单:核心内容不要只放 iframe;必须用时,加 title、fallback、可访问链接、结构化数据,并让 iframe 页面本身也具备可索引的标题、描述和正文。
## 追问
### Google 能索引 iframe 内容吗?
能,但不等于父页面拿到完整 SEO 收益。iframe 内容可能按独立 URL 理解,父页面的主题相关性和链接权重都可能被削弱。
### 哪些...服务端2月24日 22:57
iframe、object、embed 和 AJAX 有什么区别?如何选择?iframe 适合嵌入完整页面,object/embed 更适合 PDF、插件式媒体,AJAX 适合把自有内容拉回当前页面渲染。选择时先看三个问题:是不是跨域完整网页?要不要样式和脚本隔离?内容是否需要被搜索引擎直接索引?跨域、强隔离选 iframe;自有内容和 SEO 优先选 AJAX/服务端渲染;PDF 等文件优先 object,embed 只适合简单媒体嵌入。
## 追问
### iframe 和 AJAX 最大区别是什么?
iframe 会创建独立浏览上下文,父页面只能通过 postMessage 等方式通信;AJAX 把数据或 HTML 放进当前 DOM,样式、脚本、SEO ...服务端2月24日 23:00
useQuery 和 useMutation 有什么区别?分别适合什么场景?useQuery 用来读数据,useMutation 用来改数据。读数据通常自动执行、会按 queryKey 缓存,并处理 loading、error、重试和后台刷新;改数据不会因为组件渲染就自动执行,需要调用 mutate,成功后通常 invalidateQueries 让相关列表重新获取,或者做乐观更新。
## 追问
### 为什么 useMutation 不像 useQuery 那样自动缓存?
因为写操作的重点不是展示“这次提交的返回值”,而是让服务器状态发生变化。变化后要么让相关 query 失效重新拉取,要么手动更新缓存。
### 提交表单应该用哪个?
用 useMutat...服务端2月24日 23:01
React Query 和 Redux 有什么区别?什么时候该用 React Query?React Query 管服务器状态,Redux 管客户端状态。服务器状态来自后端,会过期、要缓存、要重试、要和接口同步;客户端状态只存在前端,比如弹窗开关、主题、复杂表单流程。项目里常见做法不是二选一,而是用 React Query 处理接口数据,用 Redux、Zustand 或 Context 处理真正的全局 UI 状态。
## 追问
### React Query 能替代 Redux 吗?
只能替代一大部分“把接口数据塞进 Redux”的写法。购物车草稿、权限后的菜单展开状态、跨页面编辑流程这类客户端状态,React Query 不负责。
### 为什么接口数据不适合直接放 ...服务端2月24日 23:01
React Query 有哪些高级特性?依赖查询和并行查询怎么用?React Query 的高级特性主要解决三个问题:按条件发请求、同时发多个请求、让缓存数据在合适时机变新。依赖查询用 enabled 控制执行时机;并行查询用多个 useQuery 或 useQueries;窗口聚焦重新获取用 refetchOnWindowFocus 保证页面回来时数据不过期。回答时要补一句:这些能力都围绕服务器状态,不是替代本地 UI 状态。
## 追问
### 依赖查询为什么不用 if 包住 useQuery?
Hook 不能放进条件语句里,否则调用顺序会变。正确做法是始终调用 useQuery,用 enabled: !!id 控制是否真正请求。
### 多个...