/docs 从 cdnjs 加载了 swagger-ui 4.15.5,但没有 SRI,因此在离线状态下无法运行
作者: lbellows创建于 2026年9月17日更新于 2026年9月17日
docs/ui.go 使用来自 cdnjs 的三个外部资源来提供 Swagger UI 页面:
<link rel="stylesheet" type="text/css" href="https://cdnjs.Cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui.css" >
<script src="https://cdnjs.Cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui-bundle.js"> </script>
<script src="https://cdnjs.Cloudflare.com/ajax/libs/swagger-ui/4.15.5/swagger-ui-standalone-preset.js"> </script>
这带来了三个问题:
1. **没有 `integrity`/SRI。** `/docs` 无需身份验证,并且与 Web UI 共享源,因此从该 CDN 路径中提供的任何内容都在应用程序源中运行。由于版本已经固定,因此 SRI 哈希在这里没有成本。
2. **4.15.5 来自 2022 年**,比 swagger-ui 5.x 晚了几个主要版本。
3. **`/docs` 在离线状态下不起作用**,这对于 Gotify 通常用于隔离网络/局域网部署来说很不方便 - UI 的其余部分通过 `go:embed` 进行嵌入。
将 swagger-ui-dist 编入 `ui/` 并嵌入它将同时解决这三个问题。你是否愿意为此提交一个 PR,或者是否有意选择使用 CDN 来保持二进制文件小巧?内容来源: gotify/server