fix: 放宽 CSP 允许 esm.sh CDN 加载 CodeMirror 6 ESM 模块

- script-src 添加 https://esm.sh,允许 CodeMirror 6 的 ESM import 加载
- connect-src 显式设为 self,确保 Markdown 预览 fetch 请求正常
- img-src 添加 blob:,支持粘贴图片场景
This commit is contained in:
2026-05-27 19:44:59 +08:00
parent cc527aaf19
commit 799ac3c95c
3 changed files with 20 additions and 33 deletions

View File

@ -8,10 +8,16 @@ import (
// 作为纵深防御,不影响业务逻辑,纯附加
func SecurityHeaders() gin.HandlerFunc {
return func(c *gin.Context) {
// Content-Security-Policy:仅允许本站资源 + 内联样式/脚本
// img-src 允许 data: URI 用于头像裁切预览等场景
// Content-Security-Policy
// script-src: 本站 + esm.sh CDN (CodeMirror 6 ESM 模块)
// connect-src: 本站 (Markdown 预览等 fetch 请求)
// img-src: 本站 + data: URI (头像裁切) + blob: (粘贴图片)
c.Header("Content-Security-Policy",
"default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:")
"default-src 'self'; "+
"script-src 'self' 'unsafe-inline' https://esm.sh; "+
"style-src 'self' 'unsafe-inline'; "+
"img-src 'self' data: blob:; "+
"connect-src 'self'")
// 禁止 MIME 类型嗅探
c.Header("X-Content-Type-Options", "nosniff")