我正在构建一个chrome扩展,我需要从网页中获取并解析一些html。决定使用jquery。
$(htmlString).find(".some-table");
问题是我在运行此代码时会收到以下警告。
拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src'self'chrome-extension-resource:”。要启用内联执行,需要使用'unsafe-inline'关键字,散列('sha256 -...')或nonce('nonce -...')。
似乎“htmlString”包含一些内联事件处理程序,在解析它时,chrome会抛出此警告。
我无法控制“htmlString”里面的内容,只需要从中检索一些信息。有没有更好的方法呢?
答案 0 :(得分:0)
使用显式$.parseHTML()
。引用文档:
大多数接受HTML字符串的jQuery API都会运行HTML中包含的脚本。 <{1}}不会在解析的HTML中运行脚本,除非
jQuery.parseHTML
明确为真。
然而,即使这样做也不安全。
但是,在大多数环境中仍然可以间接执行脚本,例如通过
keepScripts
属性。调用者应该注意这一点,并通过清除或转发来自URL或cookie等来源的任何不受信任的输入来防范它。
因此,虽然它可能对特定输入有所帮助,但您应该考虑是否真正需要这样的DOM节点的显式创建。它可能会产生各种令人讨厌的边缘情况。