getting error `This document requires 'TrustedHTML' assignment` in Chrome

5tmbdcev  于 2023-09-28  发布在  Go
关注(0)|答案(2)|浏览(570)

我正在开发一个运行Angularjs 1.4的应用程序。今天早上,当我将Chrome浏览器更新为Version 83.0.4103.61时,应用程序开始崩溃,出现以下错误
它似乎不再接受innerHTML了。

编辑:我发现这与我们的CSP策略有关,特别是require-trusted-types-for 'script';
随着新的Chrome更新,它似乎变得更严格了。

yyhrrdl8

yyhrrdl81#

@Doubidou方法使用default,这将禁用TrustedHTML赋值(CSP)保护。
贝娄的方式不会使保护失效。我们正在创建一个信任策略,它将返回与输入相同的值。

escapeHTMLPolicy = trustedTypes.createPolicy("forceInner", {
            createHTML: (to_escape) => to_escape
        })

然后在任何输入之前准备好你的html代码:

my_element.innerHTML = escapeHTMLPolicy.createHTML("<h1>your_html</h1>");

来源:https://developer.mozilla.org/en-US/docs/Web/API/TrustedHTML

rqmkfv5c

rqmkfv5c2#

我之所以来到这里,是因为在最近的一个reaptcha构建中,Python/selenium出现了一个抓取问题,下面是使用@Benjamin Walter Mauss上面的答案的解决方案:

driver.execute_script(f'''const escapeHTMLPolicy = trustedTypes.createPolicy("forceInner", {{createHTML: (to_escape) => to_escape}});
        document.getElementById("g-recaptcha-response").innerHTML = escapeHTMLPolicy.createHTML("{recaptcha_token}");''')

注意我在JavaScript函数中将括号加倍,以转义它们以进行f字符串格式设置

相关问题