GatsbyJS和内容安全政策



我正在努力为GatsbyJS网站添加csp元标记。有人能帮忙吗?

我在html.js中添加了meta标签(https://www.gatsbyjs.com/docs/custom-html/)并且它成功地显示在我编译的站点顶部的源代码中,但是当我运行时没有找到csp头https://csp-evaluator.withgoogle.com/.

我也试过https://www.gatsbyjs.com/plugins/gatsby-plugin-csp/但这造成了一大堆错误。

有人能帮我吗?

非常感谢

Paul

文档建议不要尝试使用html.js来修改<head>:

您在html.js组件中渲染的任何内容都不会像其他组件一样在客户端中"活跃"。如果您想动态更新您的,我们建议您使用React Helmet。

你可能会更幸运,而不是在gatsby-browser.jsgatsby-ssr.js:中添加这样的东西

export const wrapPageElement = ({ element }) => 
<>
<Helmet>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';" />
</Helmet>
{element}
</>

最后,可能值得检查的是,它是否手动出现在您构建的HTML文件中,而不是依赖于验证器。我怀疑验证器只查看您的HTTP标头(通常在其中发布CSP(,而不是元标记变体。

因此,最终的解决方案是坚持使用csp插件,并将所有被阻止的url添加到配置设置中,这可能是一个非常烦人的过程。然而,这个插件只会在您的构建中生成一个元标记。为了创建csp头,必须在服务器端添加相同的信息。在我的例子中,它被添加到Apache服务器上的htaccess文件中。希望这能帮助到别人!

相关内容

  • 没有找到相关文章

最新更新