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

使用Puppeteer转换Base64 HTML到PDF时遇ERR_BLOCKED_BY_ORB及CORS问题

解决方案:Base64 HTML转PDF时的图片加载与CORS问题

针对你遇到的net::ERR_BLOCKED_BY_ORB错误和Google字体CORS问题,给出以下针对性解决方法:

1. 给页面设置合法Base URL(核心解决方法)

用page.setContent加载纯HTML字符串时,页面默认没有origin,这会触发ORB的跨源拦截,同时导致Cookie无法正确匹配域名,也会引发Google字体的CORS校验失败。给页面设置对应域名的baseURL,让页面拥有合法的源:

修改Puppeteer代码中的setContent调用:

await page.setContent(htmlContent, {
  baseURL: 'https://mysubdomain.domain.com' // 替换为你的图片服务器域名
});

同时确认Cookie配置:你的Cookiedomain设为.mysubdomain.domain.com是正确的,若本地测试用HTTP,secure: false没问题;线上HTTPS环境需将secure改为true。

2. 添加Authorization请求头解决403权限问题

如果你的Spring服务器同时校验请求头中的JWT令牌(而非仅依赖Cookie),给页面全局设置请求头:

// 在page.setCookie之后添加
await page.setExtraHTTPHeaders({
  'Authorization': `Bearer ${jwtToken}` // 格式根据Spring服务器的认证规则调整
});

3. 临时禁用ORB与Web安全(仅测试环境用)

若上述方案无效,可临时调整Chromium启动参数绕过限制(生产环境不推荐,存在安全风险):

const browser = await puppeteer.launch({
  headless: false,
  args: [
    "--no-sandbox",
    "--disable-web-security",
    "--disable-features=OriginRestrictionsBypassPolicy,IsolateOrigins,site-per-process"
  ],
});

额外检查项

  • 验证JWT有效性:用Postman携带该令牌请求图片URL,确认能正常返回图片,排除令牌过期或权限不足的问题。
  • 检查Spring服务器CORS配置:确保服务器允许你设置的baseURL作为源访问图片资源。
  • 确认图片路径:若HTML中是相对路径,baseURL需能正确拼接成完整的图片访问地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:10:08