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

如何在CouchDB设计文档中启用eval()与Function()方法?

解决CouchDB列表函数中eval()/Function被CSP阻止的问题

这个错误本质是CouchDB默认的**内容安全策略(CSP)**在起作用——它出于安全考虑,默认禁止了eval()和new Function()这类动态执行代码的操作,直接拦截了你的调用。要解决这个问题,你需要修改CouchDB的配置来放宽CSP限制,但先提醒一句:这会带来安全风险,一定要谨慎操作。

具体步骤:

  1. 找到CouchDB的配置文件
    不同操作系统的配置文件位置不一样:

    • Linux:一般在/opt/couchdb/etc/local.ini或/etc/couchdb/local.ini
    • Windows:C:\Program Files\Apache CouchDB\etc\local.ini
    • macOS(brew安装):/usr/local/etc/couchdb/local.ini或~/Library/Application Support/CouchDB/etc/local.ini
  2. 修改CSP配置项
    打开配置文件,找到[httpd]区块,添加或修改csp参数,把'unsafe-eval'加入到script-src规则里:

    [httpd]
    csp = default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'
    

    这个配置的核心是允许脚本执行动态生成的代码,也就是放开eval()和Function构造的限制。

  3. 重启CouchDB服务
    修改完配置后必须重启服务才能生效:

    • Linux:执行sudo systemctl restart couchdb
    • Windows:打开服务管理器,找到Apache CouchDB服务并重启
    • macOS:执行brew services restart couchdb

重要安全提醒:

开启'unsafe-eval'会削弱CouchDB的安全性,因为它允许执行任意动态生成的代码,一旦你的设计文档或请求被恶意篡改,可能会导致代码注入攻击。如果你的业务逻辑可以通过静态代码实现(比如预先定义好函数逻辑,用条件分支替代动态执行),强烈建议优先采用这种更安全的方案,而不是依赖eval()或Function。

内容的提问来源于stack exchange,提问作者Cmprathap Cm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:32:47