内容安全策略
如果被录制的页面启用了内容安全策略(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-src和style-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 上线,观察违规报告后再正式强制执行。