与功能请求相关的@angular/*包有哪些?
@angular/core
@angular/platform-browser
描述
目前,在源代码以及Docs中,DomSanitizer类包含以下内容:
- bypassSecurityTrust*方法,用于绕过返回SafeValue子类型的清理检查。
- 一个名为'sanitize'的方法,可以接收一个SafeValue并将其解包为简单字符串。(我认为这个方法最初只打算由框架内部使用,后来才公开)
这种方法的问题在于,消费者没有明确的方法选择参与清理,并接收安全类型。唯一实现这一点的方法是调用这两个方法。文档并没有具体说明如何以及如果这些方法应该一起使用。如果您认为这种方法不是最佳实践,请随时纠正我。
const sanitizedUrl: string = this.domSanitizer.sanitize(SecurityContext.URL, url)
const safeUrl: SafeUrl = this.domSanitizer.bypassSecurityTrustUrl(sanitizedUrl)
实际上,这证明了相当不直观,因为sanitize方法可以接收一个SafeValue,而SafeValue只能通过调用bypassSecurityTrust*方法获得,这导致用户认为他们可能需要先调用bypass方法,或者根本不应该调用sanitize方法。
建议的解决方案
创建一个新的方法,执行与当前现有的'sanitize'方法相同的清理逻辑,同时返回相应的SafeValue子类型,并指示用户默认使用此方法,仅在提供自己的清理或验证值来源的方法时才使用bypassSecurityTrust*方法。
有关此PR的链接将在稍后添加:PR链接待添加
考虑过的替代方案
另一种选择是更新文档,提供更好的示例,说明如何同时使用'sanitize'和'bypassSecurityTrust*'方法,并建议在由于清理而导致的类型问题时采用这种方法。
1条答案
按热度按时间wj8zmpe11#
有没有什么消息?