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\n\xe2\x86\x92 我的木偶代码:
\nexport 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}\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x86\x92 我的 app.ts 代码:
\nconst 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;\nRun Code Online (Sandbox Code Playgroud)\n我尝试过添加头盔,但情况并没有改善。我还尝试使用“--disable-web-security”进行puppeteer.launch测试,但收到 403 错误。\n我在本地进行测试,图像存储在 Java/spring 服务器上。
谢谢你的回复。
\n-我尝试添加 Helmet 依赖项/未收到任何结果。\n我尝试禁用 Chromium 中的 Web 安全性/收到“无法加载资源:服务器响应状态为 403 ()”。\n我尝试使用 crossorigin="anonymous"在我的标签中/不起作用
\n对于那些最终到达这里的人,因为这是 ERR_BLOCKED_BY_ORB 的少数结果之一:在我们的例子中,这是一个 API 调用,应该回复一个看起来像 JavaScript 文件的响应,但 Redis 抛出了一个错误,所以通过网络有关错误的 JSON 响应即将到来。由于它没有像调用所期望的那样作为 JS 文件进行回复,因此它在 ORB 错误下被阻止。
检查以确保响应与您的想法相符。在我们意识到发生了什么之前,我们必须在单独的窗口中打开 API 调用,让它向我们显示实际的响应。
| 归档时间: |
|
| 查看次数: |
6735 次 |
| 最近记录: |