FIT2CLOUD
文档 的图标

文档

2,089
795

一个为Halo提供文档 / 知识库能力的插件。 my-docs在 Halo 原有文章与页面模型之外,补充一套独立的文档系统,用来承载产品手册、开发文档、帮助中心这类需要树形目录和连续阅读体验的内容。

1.6.0
tsdaer 发布于
>=2.25.0

v1.6.0:媒体同域代理与前台明暗切换

新功能

  • 同域媒体代理:新增 media-proxy 端点与「媒体同域代理」设置组。
    把允许清单内主机的图片、音视频地址改写为站点自身的
    /apis/api.my-docs.tsdaer.run/v1alpha1/media-proxy?src=… 由服务端代取,
    前台只与站点同域通信。适用于对象存储桶不对外开放、Halo 附件只记录
    裸对象地址(浏览器直连返回 400 InvalidArgument / Authorization)的情况。
    支持 *.example.com 通配主机、可选凭证请求头、大小上限;超限在响应流上截断;
    8 MiB 以内走内存,更大落临时文件流式回放。
  • 前台明暗切换按钮:访客手动选择后优先于站点主题与系统偏好,记在浏览器本地,
    刷新保持,宿主主题写在根元素上的 dark 标记不会把手动浅色压回去。
  • 后台从附件库插入视频改用图片语法 文件名,标签取附件标题或文件名。
  • 记住附件弹窗打开前的光标位置,插入落回该位置而不是文档末尾。

修复

  • 端点清理时机:临时文件曾在 WebFlux 开始写响应体之前被删除,
    大于 8 MiB 的媒体全部返回 500、客户端收到 0 字节。
  • 媒体代理大小上限未生效:改为在响应流上按字节截断,不再信任上游声明的
    Content-Length(此前声明 1 KiB 实发 12 MiB 会把整个文件读进堆)。
  • 普通域名被误判为 IPv6 私网地址(cdn.example.com 这类全十六进制字符域名被拒)。
  • :443 显式端口与尾点域名匹配不上允许清单,私有桶场景下等于既没代理、直连也打不开。
  • 带端口的凭证规则把端口当成头名,导致规则静默失效并向上游发出垃圾头。
  • 204 之类的 2xx 响应丢弃已落地的响应体,导致临时文件泄漏。
  • 附件标签在非法百分号编码时抛 URIError。

升级提示

  • 媒体同域代理默认关闭;允许清单留空时端点一律 404。
  • 该端点对访客开放,凭证规则只按主机匹配、没有路径限制:配了凭证即等于
    把该主机对公网开放读取。请只把确实需要公开的媒体主机写进允许清单。
  • 文档渲染设置新增四个媒体代理设置项;主题切换按钮出现在 /docs 三个页面右上角。

Generated from v1.6.0

资源下载

  • plugin-my-docs-1.6.0.jar