Skip to content

内容安全策略

如果被录制的页面启用了内容安全策略(CSP),策略必须允许录制器所使用的主机。缺少相应指令时,脚本或事件流会对访客静默失效:即使你自己的测试浏览器一切正常,录制也永远不会送达。

加载录制器

从 CDN 加载浏览器客户端需要:

txt
script-src https://cdn.rrweb.com

通过 npm 安装 @rrweb/browser-client 时,录制器会与你的应用代码打包在一起,因此不需要 script-src 条目。

发送事件

浏览器客户端通过 WebSocket 流式发送事件,并在同一主机上回退到 HTTP。请显式列出两种协议;部分浏览器不允许 https: 来源授权 wss: 连接:

txt
connect-src https://api.rrweb.com wss://api.rrweb.com

通过自有域名录制

当你代理录制端点并将 serverUrl 指向自己的子域名时,请把 api.rrweb.com 条目替换为该子域名:

txt
connect-src https://events.my-domain.com wss://events.my-domain.com

同源代理路径完全不需要 connect-src 条目。如果录制器脚本本身仍从 CDN 加载,script-src 条目依然是必需的。

在自己的应用中回放

以下条目适用于展示录制的页面,通常是有自己策略的内部工具:

  • 以 iframe 嵌入托管播放器需要 frame-src https://api.rrweb.com
  • 直接引用截图图片需要 img-src https://api.rrweb.com
  • 从 CDN 加载 rrweb-player 及其样式表需要为 https://cdn.rrweb.com 添加 script-srcstyle-src 条目。

完整示例

一个从 CDN 加载录制器并直接向 rrweb Cloud 发送事件的被录制页面:

txt
Content-Security-Policy:
  script-src 'self' https://cdn.rrweb.com;
  connect-src 'self' https://api.rrweb.com wss://api.rrweb.com;

请将这些来源合并进你现有的指令,而不是整体替换。要安全地验证变更,请先通过 Content-Security-Policy-Report-Only 上线,观察违规报告后再正式强制执行。