收紧策略之后地图组件整块不显示 地图容器里一片空白 换个没改策略的测试环境又是好的 控制台报 EvalError Refused to evaluate a string as JavaScript because unsafe-eval is not an allowed source in script-src。乍看像缓存或者权限的锅,追下去往往不是。
curl -sI https://e.com/map | grep -i content-security # 看 script-src 里有没有 unsafe-eval
追下去是这么回事:部分地图 SDK 用 new Function 或者 eval 拼接代码 这类动态求值 CSP 默认禁止 要放行 unsafe-eval 等于把一层防护让出去 得权衡着来 很多地图组件在严格策略下失效就是这个原因。
「unsafe-eval 报错」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
具体做法是,先确认是哪个 SDK 在求值 升级到官方新版一般会去掉这种写法;只给用到地图的那几条路由单独放行 不要全站开;放行范围写到具体路径 别直接放开整个域名 范围越小越好收。
验收就看一点,地图正常渲染 首页和文章页的策略里仍然没有 unsafe-eval 扫描结果也干净。
