You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap.min.js(v3.4)是否兼容移除unsafe-eval的CSP策略?

Bootstrap 3.4 移除unsafe-eval后的CSP兼容性分析

核心问题拆解

CSP中的unsafe-eval管控的是动态代码执行行为,包括:

  • 直接调用eval()、new Function()
  • 使用字符串参数的setTimeout("代码字符串", 延迟)或setInterval("代码字符串", 延迟)
    而普通传入函数引用的setTimeout(function() {}, 延迟)属于安全调用,不受unsafe-eval限制。

Bootstrap 3.4的CSP兼容性结论

Bootstrap 3.4本身不依赖eval或动态函数构造,源码中所有的setTimeout/setInterval调用均采用函数引用的方式,因此理论上完全兼容移除unsafe-eval的CSP策略。

针对你遇到的部分setTimeout失效问题的排查方向

你观察到的后续setTimeout无法运行,大概率不是Bootstrap本身导致的,建议从以下几点排查:

  • 检查AngularJS的CSP配置:
    AngularJS默认会使用eval解析表达式,必须在根元素添加ng-csp指令(如<html ng-app="myApp" ng-csp>),强制AngularJS切换到非eval的解析模式,否则会触发CSP违规,可能表现为依赖定时器的组件失效。
  • 查看控制台的CSP报错详情:
    打开浏览器开发者工具的控制台,找到CSP相关的报错信息,里面会明确指出是哪一行代码触发了unsafe-eval违规(比如是AngularJS的表达式解析、还是项目中其他第三方库的代码)。
  • 排查项目中的其他依赖:
    确认是否有其他第三方库(比如jQuery插件、自定义指令)使用了动态代码执行,导致CSP限制生效后影响了Bootstrap组件的定时器逻辑。

验证步骤

  1. 给AngularJS根元素添加ng-csp指令。
  2. 移除CSP中的unsafe-eval,保留script-src 'self' http: https: 'unsafe-inline'(Bootstrap 3.4需要unsafe-inline处理内联样式/脚本)。
  3. 重新运行项目,检查控制台是否还有CSP报错,同时测试Bootstrap的所有组件(模态框、工具提示、轮播等)的定时器相关功能是否正常。

内容的提问来源于stack exchange,提问作者Abhishek Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:32:15