上传矢量图标后显示空白,控制台提示内容被移除。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,清洗规则把必要的标签和属性一并过滤,文件结构被破坏,浏览器拿到空文档只能显示空白。
「SVG 清洗」这类改动最怕改一半,回滚脚本先准备好,再动生产。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
ALLOWED = {'svg','g','path','circle','rect','line','polygon','defs','use'}
clean = bleach.clean(raw, tags=ALLOWED, attributes={'*': ['fill','stroke','d']})
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
具体做法是,按白名单保留图形标签;允许路径与样式属性;去除脚本与外部引用。
最后用这个标准收尾,图标正常显示,内嵌脚本与外部引用仍然被拦截,不影响页面安全。