为什么我的CSP策略阻止了eval函数,但移除unsafe-eval又报错?
我在开发动态表单组件时用到了eval执行表达式,CSP报错提示缺少unsafe-eval。尝试在header里加了script-src 'self' 'unsafe-eval',但控制台还是显示:
Content-Security-Policy: script-src 'self' 'unsafe-eval'
更奇怪的是,如果完全移除unsafe-eval,页面直接崩溃报Uncaught DOMException: Blocked a frame with origin from evaluating a string as JavaScript because the value of the keyword。我已经检查过第三方库没用eval,这是怎么回事?
Content-Security-Policy,并且确认没有 meta 标签或其他中间件注入了更严格的策略。用这个完整 header 测试:
同时确保浏览器没缓存旧策略,清缓存后重试。但强烈建议替换 eval,用 Function 构造函数或 JS 表达式解析器(比如 mathjs)更安全。