
asp.net mvc 新建项目出现 csp 拒绝执行内联脚本的报错,往往并非项目配置问题,而是浏览器扩展(如 blaze meter)注入脚本触发了安全策略限制;关闭相关插件即可解决,无需修改代码或配置。
asp.net mvc 新建项目出现 csp 拒绝执行内联脚本的报错,往往并非项目配置问题,而是浏览器扩展(如 blaze meter)注入脚本触发了安全策略限制;关闭相关插件即可解决,无需修改代码或配置。
在使用 Visual Studio 2019 创建默认的 ASP.NET MVC 5 项目(.NET Framework 4.6.1,无身份验证、未启用 HTTPS 或 Docker)后,开发者常在 Chrome 控制台看到类似以下错误:
Refused to execute inline script because it violates the following Content Security Policy directive:
"script-src 'self' 'wasm-unsafe-eval' 'inline-speculation-rules'".
Either the 'unsafe-inline' keyword, a hash ('sha256-dLJqJSO80JC9QgrIRU3rSxbpAb/bYXylIngicy7GOgY='),
or a nonce ('nonce-...') is required to enable inline execution.
⚠️ 关键提示:该错误通常不是由 MVC 项目自身引发的。默认 MVC 模板(如 _Layout.cshtml 中的 @RenderSection("scripts", required: false))并不包含硬编码的内联 <script> 标签,且项目未配置任何 CSP HTTP 响应头(如 Content-Security-Policy)。因此,服务器端并未主动启用严格 CSP。</script>
真正原因在于——第三方浏览器扩展。例如,性能测试工具 Blaze Meter 会在页面中动态注入分析脚本,而现代 Chrome 默认启用严格的 CSP 策略(尤其在启用某些实验性安全特性时),当扩展尝试插入不带 nonce 或 hash 的内联脚本时,即被拦截并报错。
✅ 快速验证与解决步骤:
- 打开 Chrome,进入 chrome://extensions/;
- 临时禁用所有非必要扩展(尤其是性能监控、API 测试、广告拦截类工具,如 Blaze Meter、Postman Interceptor、React DevTools 等);
- 刷新应用页面,观察控制台是否仍有 CSP 报错;
- 若错误消失,逐个启用扩展定位元凶;
- 确认问题扩展后,可选择卸载、更新至兼容版本,或在开发时禁用其对本地 localhost 的注入(部分扩展支持域名白名单设置)。
? 补充说明:
- 不建议为绕过此问题而在 web.config 中添加
强制设置宽松 CSP(如 'unsafe-inline'),这会削弱安全防护,且治标不治本; - 若确需在项目中启用 CSP(如生产环境),应采用基于 nonce 或哈希的安全方案,例如在 Global.asax 或中间件中生成唯一 nonce,并同步注入到 <script nonce="@ViewData[" cspnonce> 及响应头中; </script>
- 开发阶段优先排查浏览器环境干扰,而非假设框架或模板存在缺陷。
总之,面对“新建即报错”的 CSP 问题,请先怀疑浏览器扩展——这是最常见、最易忽略、也最高效的突破口。











