如何修复ASP.NET Core 5中CSP拒绝加载aspnetcore-browser-refresh.js的问题
问题根因
该报错是内容安全策略(CSP)拦截了ASP.NET Core 5热重载功能配套的aspnetcore-browser-refresh.js脚本导致:你当前配置的script-src规则仅允许哈希值为sha256-fa5rxHhZ799izGRP38+h4ud5QXNT0SFaFlh4eqDumBI=的脚本加载,热重载脚本不在允许列表内,因此被浏览器拦截。
解决方法
方案1:本地开发阶段使用
- 不用
dotnet watch命令启动项目,改用dotnet run启动,不会加载热重载相关脚本,报错自动消失 - 也可以在开发环境下临时注释CSP配置,不需要修改生产环境规则
方案2:永久适配热重载功能
修改你的CSP配置,在script-src的允许列表中新增热重载脚本的匹配规则即可:
原来的CSP规则:
script-src 'sha256-fa5rxHhZ799izGRP38+h4ud5QXNT0SFaFlh4eqDumBI='
如果允许同域名下的脚本加载,修改为:
script-src 'sha256-fa5rxHhZ799izGRP38+h4ud5QXNT0SFaFlh4eqDumBI=' 'self'
如果需要更严格的规则,也可以单独添加热重载脚本的路径:
script-src 'sha256-fa5rxHhZ799izGRP38+h4ud5QXNT0SFaFlh4eqDumBI=' https://localhost:5001/_framework/
方案3:生产环境处理
生产环境不需要热重载功能,发布项目时确保没有启用开发阶段的热重载相关配置,项目上线后不会加载该脚本,不会触发该报错。
内容的提问来源于stack exchange,提问作者Đỗ Như Vỹ
相关产品推荐
相关产品推荐

