
受保护下载不仅要验证普通GET,还要核对HEAD、Range及相关缓存和静态旁路。Content-Disposition提示浏览器下载并不提供权限控制;授权判断应在所有提供文件或信息的路径保持一致。
先绘制所有下载入口
记录应用下载链接、真实文件位置、CDN地址、别名路径和预览接口。隐藏真实URL不等于服务器拒绝直接访问。某些系统对页面有登录保护,却让附件静态目录公开,需要先确认浏览器真正获取文件的请求走哪条路径。
区分完整内容与元信息泄露
HEAD可能不返回正文,但仍可能暴露存在性、长度或其他元数据;Range用于请求部分内容,不能被视作不需要授权的例外。根据业务要求明确不同请求的结果,不让处理器只在一种方法下做登录检查,其他方法直接交给公开静态服务。

让授权和缓存策略配套
私人响应不应被无条件公共缓存,用户切换、链接失效和权限撤销也要考虑。下载文件名和响应头是展示层信息,不是授权凭据。需要签名链接时,核对有效范围、期限与访问规则,不把签名原文写入公开日志或普通交接文档。
做完整与部分请求回归
授权环境中分别检查允许用户、未登录和无权用户的GET、HEAD及适用Range行为,确认错误响应不泄露不应公开的信息。再检查合法大文件下载完整、断点行为符合设计,不用返回一个登录HTML页面加200冒充下载拒绝或成功。
关键区别

GET:获取文件内容;需要正确授权。
HEAD或Range:元信息或部分内容;不能形成绕过入口。
下载响应头:描述展示行为;不是访问控制机制。
怎样确认处理到位
所有文件入口和请求方法遵守约定权限,私有响应不被公共复用,合法下载完整且错误状态清楚,没有泄漏签名或文件路径。
容易误判的边界
本文不提供可替代完整授权系统的一条响应头;文件敏感程度、缓存及分享链接期限应由真实业务决定。
