TrustedTypePolicyFactory: createPolicy() 方法
注意:此功能在 Web Workers 中可用。
createPolicy()
方法是 TrustedTypePolicyFactory
接口的方法,它创建 TrustedTypePolicy
对象,该对象实现作为 policyOptions
传递的规则。
默认策略
在 Chrome 中,名为“default”的策略会创建一个特殊策略,如果将字符串(而不是 Trusted Type 对象)传递到注入接收器,该策略将被使用。这可以在从将字符串插入到注入接收器的应用程序过渡到使用 Trusted Type 对象的应用程序的过程中使用。
注意:上述行为尚未在规范中确定,可能会在未来发生变化。
警告:宽松的默认策略可能会破坏使用 Trusted Types 的目的,因此应该使用严格的规则定义它,以确保它不能用于运行危险代码。
语法
createPolicy(policyName, policyOptions)
参数
policyName
-
包含策略名称的字符串。
policyOptions
可选-
用于将字符串转换为受信任值的自定义函数。
createHTML(input[,args])
-
回调函数,以字符串的形式表示,包含在创建
TrustedHTML
对象时运行的代码。 createScript(input[,args])
-
回调函数,以字符串的形式表示,包含在创建
TrustedScript
对象时运行的代码。 createScriptURL(input[,args])
-
回调函数,以字符串的形式表示,包含在创建
TrustedScriptURL
对象时运行的代码。
返回值
一个 TrustedTypePolicy
对象。
异常
TypeError
-
如果策略名称受到 内容安全策略
trusted-types
指令 的限制,并且此名称不在允许列表中,则会抛出此异常。 TypeError
-
如果名称是重复的,并且 内容安全策略 trusted-types 指令 未使用
allow-duplicates
,则会抛出此异常。
示例
以下代码创建一个名为 "myEscapePolicy"
的策略,该策略定义了一个 createHTML()
函数,该函数用于对 HTML 进行清理。
const escapeHTMLPolicy = trustedTypes.createPolicy("myEscapePolicy", {
createHTML: (string) => string.replace(/</g, "<"),
});
创建默认策略
在一个使用内容安全策略强制执行 Trusted Types 的网站上,其中 require-trusted-types-for
指令设置为 script
,任何接受脚本的注入脚本都期望一个 Trusted Type 对象。如果插入的是字符串,则将使用以下默认策略。
此策略会向控制台记录一条消息,以提醒开发人员重构应用程序的这部分以使用 Trusted Type 对象。它还会将默认策略使用情况、类型和注入接收器的详细信息追加到返回的值中。
trustedTypes.createPolicy("default", {
createScriptURL: (s, type, sink) => {
console.log("Please refactor.");
return `${s}?default-policy-used&type=${encodeURIComponent(
type,
)}&sink=${encodeURIComponent(sink)}`;
},
});
规范
规范 |
---|
Trusted Types # dom-trustedtypepolicyfactory-createpolicy |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。