先按响应分类,而不是给整站贴标签
商品图片与某位顾客的结账摘要可以使用同一域名,但未必适用同一缓存策略。编辑建议先按内容建立清单:公共图片与样式、通用页面框架、个性化 HTML、支付状态接口响应;再标出包含顾客标识、选定地址、订单金额或会话专属指令的部分。本文研究这些响应的存储与复用,不重复支付日志脱敏或查询重试主题。RFC 9111 定义 HTTP 缓存行为,并不认证某家商户的部署,也不替商户判断业务数据敏感性。[2] 在给所有路由复制同一响应头之前,应先完成响应分类。
no-cache 不等于禁止保存
不带参数的 no-cache 响应指令要求缓存转发验证并获得成功响应后,才能复用原响应;它不是存储禁令。[2] 因此,为个性化结账页加上 no-cache,并不自动满足“不允许保留副本”的要求。编辑建议先写清目标:副本能否存在,哪一层可以保存,再次使用前需要执行什么检查。如果允许保存但必须确认新鲜度,验证机制可能合适;如果不允许留存,仅凭指令名称看起来安全就作选择,会混淆两种完全不同的要求。验收表应分别列出存储与复用条件。
private 限制共享,no-store 限制留存
不带参数的 private 禁止共享缓存保存响应,但允许私人缓存在其他约束下保存。no-store 响应指令要求缓存不保存本次请求或响应,也不将该响应用于满足其他请求;它同时适用于私人缓存和共享缓存。[2] 对商户自行控制的敏感结账响应,编辑建议以 Cache-Control: private, no-store 作为待验证的起点,再检查真实交付链路。这是建议配置,不是对 PayIn 线上响应头的测量。不能认为 private 单独就禁止浏览器保存,也不应把敏感响应策略无差别套到公开的版本化图片与样式上。
Cookie 与访问授权不是同一种缓存规则
RFC 9111 明确指出,Set-Cookie 本身并不阻止缓存;它还规定了带 Authorization 请求的响应在共享复用方面的限制与例外,并说明 public 可以允许原本受禁止的存储。[2] 编辑建议不要仅因存在登录 Cookie、需要登录的网址或框架标签就判断安全。应检查具体个性化响应实际送达的头部,复核添加 public 或共享新鲜度时长的规则。公共页面框架与需要认证的数据请求可以分开处理,但这种分离必须真实存在:如果通用 HTML 内嵌了订单摘要,HTML 本身也已经个性化。
缓存头不能替代访问控制
RFC 9111 提醒,no-store 不是可靠或充分的隐私保障机制:受损缓存可能不遵守指令,网络窃听也是另一类问题。[2] 因此编辑清单把身份认证、访问授权、传输保护与缓存策略分别检查。调用者不能因为响应带 no-store 就被允许读取另一位顾客的订单。应用自行管理的存储与离线逻辑也应单独审查,不能假定一个 HTTP 响应头已替它们完成审计。更换不安全策略时,应把历史已存副本作为独立整改事项,不要把新增响应头描述成所有历史副本已经清除的证明。
让两位测试顾客走过真实交付链路
在受控环境使用虚构账户与不含敏感信息的测试数据。编辑建议先以顾客甲请求结账响应,再以顾客乙请求相同网址,最后在无会话条件下请求。逐项确认访问授权结果符合预期,任何响应都不含另一账户的测试标记。按应用实际路径经过浏览器、反向代理与 CDN 重复检查,记录送达的响应头,而不仅检查源站配置。HTML 与 JSON 应分别测试,也要覆盖可能携带个性化文字的错误响应和重定向。这些是验收操作建议,不表示本文执行过真实支付或渗透测试。
留下明确的策略决策记录
记录每类响应的预期存储策略、责任人及实际交付行为。至少准备公共资源、个性化成功响应、未授权请求与应用错误四类样例。在框架或 CDN 规则变化后重跑同一清单,同时比较头部和正文。如果正文属于错误账户,仅有成功状态码不能算通过。编辑建议在发现跨账户内容复用或无法解释的策略覆盖时停止上线,查明发生问题的具体层。公开编辑文章仍可使用缓存;目标是在私人支付状态周围建立明确边界,而不是关闭整站一切有用缓存。
来源与日期
本次核验日期:2026-09-20。来源日期按原页面明确标注的发布或更新时间分别列示;未标注不等于本日发布。本文为公开文档研究,未进行真实支付、安全审计或辅助技术合规认证。厂商事实仅归属于被引用厂商;流程建议为编辑综合。