html sanitizer 没有 getdefaultconfiguration 方法;原生实现仅支持 new sanitizer() 触发内置保守默认策略,允许基础文本元素并禁用脚本、事件等,不暴露可序列化配置对象。

HTML Sanitizer 的 getDefaultConfiguration 在哪里?
它根本不存在 —— 至少不在标准 Web API 中。getDefaultConfiguration 不是浏览器原生 Sanitizer 构造函数提供的方法,也不是任何规范定义的接口。你搜到的这个函数名,大概率来自某个第三方库(比如早期实验性 polyfill、或某个框架封装),但现代 Chrome/Firefox/Safari 支持的原生 Sanitizer(自 Chrome 129+ 稳定启用)**没有该方法**。
原生 Sanitizer 怎么获取默认行为?
浏览器不暴露“默认配置对象”,但它的默认行为是明确定义的:只保留 <div>、<code><p></p>、<span></span>、<strong></strong>、<em></em> 等基础文本容器和内联元素,移除所有脚本、事件处理器、<style></style>、<script></script>、javascript: 协议等。你可以通过构造一个无参数的实例来触发默认策略:
const sanitizer = new Sanitizer(); // 这就是“默认规则”的实际使用方式
注意:new Sanitizer() 不等于“空配置”——它等价于传入了浏览器内置的保守白名单,不是可序列化的配置对象。
想看/改默认规则?只能手动构造配置对象
如果你需要知道默认允许哪些标签或属性,目前唯一可靠方式是查阅规范或 Chromium 源码;但更实用的做法是显式声明你需要的规则,避免依赖隐式默认值。例如:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
-
allowElements控制保留哪些标签(默认不含<img>、<a></a>) -
dropAttributes或allowAttributes控制属性(默认禁用onclick、onload等所有事件) -
sanitizationFilter可注入自定义逻辑,但无法反推默认过滤器实现
示例:显式复现“接近默认”的配置(仍比原生默认略宽松):
const config = {
allowElements: ['div', 'p', 'span', 'strong', 'em', 'br', 'ul', 'ol', 'li'],
allowAttributes: { '*': ['class', 'id'] },
};
为什么别试图“获取默认配置”?
原生 Sanitizer 的设计哲学是“安全优先、不可逆抽象”——默认策略可能随版本收紧(比如某次更新后悄悄禁掉 <iframe></iframe> 即使你没配),且不同浏览器实现细节存在差异。硬编码依赖“当前默认”会带来兼容性和安全风险。
真正关键的不是拿到默认值,而是明确你允许什么。哪怕只多写两行配置,也比假设 getDefaultConfiguration() 存在更可靠。










