Internet Explorer 在分块获取 PDF 时丢弃 Referer header

Internet Explorer drops Referer header when fetching a PDF in chunks

我们有一个提供 PDF 的网络应用程序。我们仅在 Internet Explorer 11 中看到偶尔失败。失败与依赖于 Referer header 的应用程序逻辑有关。 (我知道,使用 Referer header 并不稳健。)

当 IE 尝试分块获取大型 PDF 时会出现问题。第一个块返回 OK,它的 HTTP 请求有一个 Referer header。

第二块不正常。对于第二个块,HTTP 请求中缺少 Referer header。这会启动依赖于 Refererheader 缺失的应用程序逻辑,并且作为副作用,PDF 下载失败。

为什么 Referer header 在抓取过程中掉线了,我能做些什么吗?

我们通过更改服务器 HTTP 响应中的 Accept-Ranges header 解决了这个问题。

对于以 .pdf 结尾的 URL,我们将 header 更改为:

Accept-Ranges: none

这可确保客户端不会分块提取文件。