You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chromium更新后a标签download属性下载dot文件失败,地址栏访问正常

Chromium浏览器更新后Dot文件下载失败问题

原运行正常的代码

<td valign="top">
   <a href="https://chrysalis-systems.net/shared/tmp/dfmapbCNAPQ1.dot" download="">
      <button type="button" title="download graph specification (graphViz:dot)">
         <img src="/dflibg/sdk/images/downloadA32.png">
      </button>
   </a>
</td>
<td valign="top">
   <a href="https://chrysalis-systems.net/shared/tmp/dfmapbCNAPQ1.png" print="" target="_blank">
      <button type="button" title="print or save graph">
         <img src="/dflibg/sdk/images/printerC.png">
      </button>
   </a>
</td>

问题现象(Chromium最新版本更新后出现)

  • 新窗口打开图片的链接功能正常;
  • 带download属性的dot文件下载链接触发“Failed Network Error”,此前该功能稳定运行多年;
  • 直接将下载链接粘贴到地址栏可正常完成下载。

已完成的排查

  • 目标文件均存在,且权限、归属完全一致:
    [root@amauris4 logs]# ls -lt $DOCUMENT_ROOT/shared/tmp/dfmapbCNAPQ1*
    -rw-r--r--. 1 apache apache  478 Mar  4 20:04 /mnt/sr/web/html/shared/tmp/dfmapbCNAPQ1.map
    -rw-r--r--. 1 apache apache 6792 Mar  4 20:04 /mnt/sr/_web/html/shared/tmp/dfmapbCNAPQ1.png
    -rw-r--r--. 1 apache apache  843 Mar  4 20:04 /mnt/sr/_web/html/shared/tmp/dfmapbCNAPQ1.dot
    
  • 排除Referrer问题(两个链接的Referrer完全一致);
  • 服务器日志仅记录图片请求,未捕获到dot文件的下载请求;
  • 禁用防火墙后问题未解决;
  • 浏览器开发者工具控制台无任何报错信息;
  • 页面属于某扩展的前台界面,可通过<img>正常加载目标图片,仅download功能失效,问题覆盖Chrome和Edge浏览器。

解决建议

1. 为download属性指定具体文件名

Chromium最新版本可能对空download属性的处理逻辑进行了调整,尝试给属性补充明确的文件名:

<a href="https://chrysalis-systems.net/shared/tmp/dfmapbCNAPQ1.dot" download="dfmapbCNAPQ1.dot">

2. 重构a标签嵌套button的结构

这种嵌套方式在Chromium更新后可能触发了更严格的交互逻辑检查,改用JS触发下载的方式替代:

<td valign="top">
  <button type="button" title="download graph specification (graphViz:dot)" onclick="initDotDownload()">
    <img src="/dflibg/sdk/images/downloadA32.png">
  </button>
</td>

<script>
function initDotDownload() {
  const downloadUrl = 'https://chrysalis-systems.net/shared/tmp/dfmapbCNAPQ1.dot';
  const link = document.createElement('a');
  link.href = downloadUrl;
  link.download = 'dfmapbCNAPQ1.dot';
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}
</script>

3. 调整服务器对Dot文件的Content-Type配置

确保服务器返回的Dot文件Content-Type为浏览器无法直接解析的类型(如application/octet-stream),避免触发Chromium的安全限制。在Apache配置中添加:

# 方式1:指定Content-Type为二进制流
AddType application/octet-stream .dot

# 方式2:强制触发下载头
<FilesMatch "\.dot$">
  Header set Content-Disposition "attachment; filename=\"%f\""
</FilesMatch>

4. 检查扩展权限配置

由于页面属于扩展前台,Chromium更新后可能收紧了跨域下载的权限,需确认扩展manifest.json中是否包含目标资源的访问权限:

"permissions": [
  "https://chrysalis-systems.net/shared/tmp/*"
]

内容的提问来源于stack exchange,提问作者Chrys G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:28:16