有没有办法在 Apache 中禁用字节范围请求?

有没有办法在 Apache 中禁用字节范围请求?

我有一个网页,其中有一个 PDF 文件链接 ( target="_blank")。如果我单击该链接,PDF 阅读器只会在 Firefox 浏览器中显示灰色屏幕。

如果我复制该链接并在新选项卡中手动打开它,PDF 将正确显示,并且通过单击原始链接进行的后续请求现在可以工作,这表明问题发生在将文件加载到缓存中时。

看起来好像 Adob​​e PDF 阅读器插件正在发出字节范围请求(我看到很多 206 个响应),我怀疑这可能是问题的原因。

我正在运行 Apache 网络服务器。有人遇到过 Apache 和 Adob​​e 的字节范围请求问题吗?有没有什么解决方法?也许可以配置 Apache 以忽略 PDF 上的字节范围请求?

答案1

在 httpd 邮件列表中询问并回答了如何禁用请求的问题:

如何禁用 Accept-Ranges?

接受字节范围请求的源服务器可能会发送

      Accept-Ranges: bytes

  Servers that do not accept any kind of range request for a
  resource MAY send

      Accept-Ranges: none

如果您找不到更直接的方法,您可以随时使用 mod_headers 来删除或更改响应标头。

-> 请参阅 apache 文档中的 mod_headers,了解如何将 Accept-Ranges 标头设置为 none

http://mail-archives.apache.org/mod_mbox/httpd-users/200912.mbox/%[电子邮件保护]%3E

答案2

此问题有时会在 Acrobat Reader 中查看 PDF 时产生错误 109。

要通过 htaccess 文件禁用字节范围请求:

# Disable Byte-range for PDF files
<Files *.pdf>
    Header set Accept-Ranges none 
</Files>

答案3

您是否让 Squid 处于中间状态?这是 Adob​​e 插件的一个常见问题 - 它尝试获取 PDF 的末尾(目录),Squid 开始下载整个文件,Adobe 超时并显示空白页。

教自己“右键单击,另存为”——PDF 不是网络文档,不应在浏览器中查看。

相关内容