ERR_BLOCKED_BY_ORB 与木偶操纵者

Wil*_*Wil 7 request node.js cors puppeteer

我正在开发 Express JS API,用于将 base64 HTML 转换为 PDF。

\n

我正在使用 Puppeteer 进行此转换。在 HTML 代码中,有一个图像托管在需要身份验证的专用服务器上。\n我在尝试从此第三方服务器检索图像时遇到问题。\n在采用“headless: false”模式的 Chromium 中,我收到这些错误:

\n

**“无法加载资源:net::ERR_BLOCKED_BY_ORB。” **

\n

请注意,Cookie 存在于 Chromium 中。

\n

(我在加载 Google 字体时也遇到了 CORS 政策问题。)

\n

我的错误在这里:

\n

1

\n

\xe2\x86\x92 我的木偶代码:

\n
export class PdfManager {\n  async convertToPdf({ content, jwtToken }: HtmlToPdfTypes) {\n    const cookie = [\n      {\n        name: "user",\n        value: jwtToken,\n        domain: ".mysubdomain.domain.com",\n        httpOnly: false,\n        secure: false,\n        hostOnly: false,\n      },\n    ];\n\n    const browser = await puppeteer.launch({\n      headless: false,\n      args: [\n        // "--disable-web-security",\n        "--no-sandbox",\n      ],\n    });\n\n    const page = await browser.newPage();\n\n    await page.setCookie(...cookie);\n\n    const htmlContent = Buffer.from(content, "base64").toString();\n\n    await page.setContent(htmlContent);\n\n    const pdf = await page.pdf({\n      format: "A4",\n      printBackground: true,\n    });\n\n    // await browser.close();\n\n    return pdf;\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x86\x92 我的 app.ts 代码:

\n
const app = express();\n\napp.use(bodyParser.json({ limit: "10mb" }));\n\napp.use(\n  bodyParser.urlencoded({\n    extended: true,\n    limit: "10mb",\n    parameterLimit: 50000,\n  })\n);\n\napp.use(express.json());\n\napp.use(\n  cors({\n    credentials: true,\n    origin: process.env.FRONTEND_URL,\n    optionsSuccessStatus: 200,\n  })\n);\n\napp.use(router);\n\napp.use(express.static(path.join(__dirname, "../public")));\n\nexport default app;\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试过添加头盔,但情况并没有改善。我还尝试使用“--disable-web-security”进行puppeteer.launch测试,但收到 403 错误。\n我在本地进行测试,图像存储在 Java/spring 服务器上。

\n

谢谢你的回复。

\n

-我尝试添加 Helmet 依赖项/未收到任何结果。\n我尝试禁用 Chromium 中的 Web 安全性/收到“无法加载资源:服务器响应状态为 403 ()”。\n我尝试使用 crossorigin="anonymous"在我的标签中/不起作用

\n

Jam*_*ray 0

对于那些最终到达这里的人,因为这是 ERR_BLOCKED_BY_ORB 的少数结果之一:在我们的例子中,这是一个 API 调用,应该回复一个看起来像 JavaScript 文件的响应,但 Redis 抛出了一个错误,所以通过网络有关错误的 JSON 响应即将到来。由于它没有像调用所期望的那样作为 JS 文件进行回复,因此它在 ORB 错误下被阻止。

检查以确保响应与您的想法相符。在我们意识到发生了什么之前,我们必须在单独的窗口中打开 API 调用,让它向我们显示实际的响应。