我搜索了很多关于SO的问题。但没有解决我的问题。我在asp.net mvc5应用程序中使用谷歌recaptcha v2。它在谷歌浏览器中工作正常。但它在firefox和edge浏览器中显示出一些错误。我怀疑这是与内容安全策略标题相关的内容。
Firefox中的错误
Content Security Policy: Ignoring “'unsafe-inline'” within script-src: ‘strict-dynamic’ specified
Content Security Policy: Ignoring “https:” within script-src: ‘strict-dynamic’ specified
Content Security Policy: Ignoring “http:” within script-src: ‘strict-dynamic’ specified
Edge中的错误
通过允许脚本和相同的原始访问可能会破坏沙盒iframe的安全性。
由于这个错误,recaptcha无法正常工作,因为它每次都会超时
我试图在web.config中添加这样的csp头文件
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="script-src 'self' 'unsafe-inline' https://www.google.com https://www.google.com/recaptcha/api.js https://www.gstatic.com" />
</customHeaders>
</httpProtocol>
</system.webServer>
但由于浏览器阻止了所有其他文件,因此我的页面无法正常工作
脚本的失败似乎与CSP无关。那些并不是你得到的错误;只是注意到。
在CSP中,一些策略会覆盖其他策略,因此您会注意到策略A被忽略,因为您正在使用策略B.那么为什么要将策略A置于其中,您问?为了与不了解策略B的旧浏览器兼容
例如:我使用CSP nonce,但也放入“unsafe-inline”。 IE不理解nonces,所以它使用“unsafe-inline”规则。现代浏览器忽略“unsafe-inline”并使用nonce。在Firefox控制台中,我收到类似于你所获得的通知