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

Next.js集成utteranc.es时出现CSP脚本加载报错如何解决

问题说明

接入utteranc.es评论系统时浏览器抛出如下拦截报错:

Refused to load the script 'https://utteranc.es/client.js' because it violates the following Content Security Policy directive
即浏览器拒绝加载https://utteranc.es/client.js脚本,原因是脚本违反当前站点配置的内容安全策略(CSP)指令。

故障原因

当前next.config.js内的CSP配置存在两处不符合规范的问题:

  • 源匹配规则写法错误:script-src、child-src、frame-src中配置的utteranc.es未带协议前缀,CSP无法匹配该域名下的脚本、iframe资源,直接触发加载拦截
  • 权限缺失:未配置utteranc.es请求GitHub评论数据所需的连接权限,即使脚本加载成功,后续也会出现评论拉取、提交失败的问题
修复方案

直接替换原有CSP配置内容即可:

const ContentSecurityPolicy = `
    default-src 'self';
    script-src 'self' 'unsafe-eval' 'unsafe-inline' *.youtube.com *.twitter.com https://utteranc.es;
    child-src *.youtube.com *.google.com *.twitter.com https://utteranc.es;
    frame-src https://utteranc.es;
    style-src 'self' 'unsafe-inline' *.googleapis.com;
    img-src * blob: data:;
    media-src 'none';
    connect-src * https://utteranc.es api.github.com;
    font-src 'self';
`;

配置修改后注意事项:

  • 本地开发环境需要重启Next.js服务才能让新的安全头配置生效
  • 生产环境需要重新执行构建部署流程
  • 验证时建议清空浏览器缓存,避免旧的CSP缓存导致规则不生效

内容的提问来源于stack exchange,提问作者Alex Cuba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:45:42