一、 现象:为什么我的图片传不上去?
很多小伙伴在 1Panel 中部署好 Halo 2.x 后,兴冲冲地去发文章,结果一上传图片就弹出蓝色的盾牌页面,提示: “请求携带恶意参数,已被拦截” 。
这通常是 1Panel 自带的 WAF(网站防火墙) 太过严格导致的。它误把图片上传的数据包当成了黑客的攻击代码(如 XSS 或 SQL 注入),直接回绝了你的请求(403 错误)。

二、 避坑:新旧版本 API 路径大不同
很多网上的旧教程会让你放行 /api/v1/assets,所以操作了之后依旧提示拦截,然后回到日志查看拦截的内容。

但在 Halo 2.x 中,这个路径已经变了。如果你加了没效果,看看下面的对比:

结论: Halo 2.x 的路径更长、更复杂,使用传统的固定路径白名单已经很难完全覆盖。
三、 终极方案:使用“正则模式”白名单
为了不再被频繁拦截,我们推荐在 1Panel 中使用正则表达式来一次性放行所有管理接口。
第一步:精准设置 URL 白名单
登录 1Panel,进入 网站 -> WAF -> 网站设置 。
点击你网站对应的 规则配置 ,找到 URL 白名单 。
直接添加这条正则规则:
^/apis/(.*)
(这条规则的意思是:只要是以 /apis/ 开头的请求,WAF 通通放行。这涵盖了上传、发文、改设置等所有核心操作。)
^/apis/console.api.storage.halo.run/v1alpha1/attachments/(.*)
(这里我添加的这条,如果还是频繁拦截请使用第一条)

第二步:调整语义检测(这个留作备用)
即便加了白名单,有些超长博文(含大量代码)仍可能被拦截。
在同一配置界面中,找到 “XSS 语义检测” 。
将其开关设置为 关闭 。
理由 :Halo 作为一个成熟的博客程序,自带安全过滤机制。关闭 WAF 端的这一项检测,可以极大地提升写作体验,避免误报。
四、 总结
解决 403 拦截的核心逻辑就是:用正则路径覆盖新版 API,关闭过度敏感的语义检测。
评论