react-google-recaptcha配合Helmet CSP配置报错如何解决?
你在HTML中添加的meta标签配置的CSP优先级低于Helmet返回的HTTP响应头中的CSP规则,因此你的meta配置没有生效,这是问题的根本原因。按以下步骤调整即可解决:
- 直接在Helmet配置中添加reCAPTCHA相关的CSP规则,参考配置如下:
app.use( helmet.contentSecurityPolicy({ useDefaults: true, directives: { scriptSrc: [ "'self'", "https://www.google.com", "https://www.google.com/recaptcha/", "https://www.gstatic.com/recaptcha/" ], frameSrc: [ "https://www.google.com", "https://www.google.com/recaptcha/", "https://recaptcha.google.com/recaptcha/" ], // 若出现样式拦截报错,可补充以下配置 styleSrc: ["'self'", "'unsafe-inline'", "https://www.gstatic.com"] } }) );
- 删除HTML中自行添加的CSP meta标签,避免两套规则冲突。
- 若调整后仍有报错,可临时开启报告模式定位具体拦截项:
app.use( helmet.contentSecurityPolicy({ // 保留原有配置 reportOnly: true // 仅输出拦截日志,不实际阻止资源加载 }) );
根据控制台输出的拦截日志补充对应域名到CSP规则即可。
内容的提问来源于stack exchange,提问作者Jomar Tinga
相关产品推荐
相关产品推荐

