伪造者page.goto()发布的帖子未使用静态资产

时间:2020-07-04 12:29:08

标签: javascript puppeteer nestjs

我想使用对我的NestJ端点之一的Post请求获得puppeteer.goto()和puppeteer.pdf()的pdf。 当我尝试一个Get请求时,一切都按预期工作,但是,我想传递一些数据,因此它需要是Post请求。但是Post请求不使用样式,...等静态资产。

出于测试目的,两个端点返回的页面完全相同,唯一的不同是获取/发布。

  @Get()
  @Render('firstPage')
  root(@Query() query) {
    return { products: '' };
  }
  @Post('/test')
  @Render('firstPage')
  test(@Body() requestBody) {
    return { products: '' };
  }

带有发布到/ test端点的代码:

async generatePdfTest(requestBody): Promise<Buffer> {
    try {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
      await page.setRequestInterception(true);
      page.on('request', interceptedRequest => {
        const data = {
          method: 'POST',
          postData: querystring.stringify(requestBody),
          headers: {
            ...interceptedRequest.headers(),
            'Content-Type': 'application/x-www-form-urlencoded',
          },
        };
        interceptedRequest.continue(data);
      });
      await page.goto('http://localhost:3000/test', {
        waitUntil: 'networkidle2',
      });
      return await page.pdf({
        format: 'A4',
        printBackground: true,
      });
    } catch (err) {
      throw new HttpException(err, HttpStatus.INTERNAL_SERVER_ERROR);
    }
  }

获取端点的代码:

async generatePdfTest(requestBody): Promise<Buffer> {
    try {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
      await page.goto('http://localhost:3000', {
        waitUntil: 'networkidle2',
      });
      return await page.pdf({
        format: 'A4',
        printBackground: true,
      });
    } catch (err) {
      throw new HttpException(err, HttpStatus.INTERNAL_SERVER_ERROR);
    }
  }

发布端点的结果: Post endpoint screenshot

Get端点的结果: Get Endpoint result

有人知道为什么静态资产在发布请求中会被忽略吗?

0 个答案:

没有答案