Express.js POST возвращает 404 на IIS - PullRequest
0 голосов
/ 14 января 2019

У меня есть экспресс-сервер, который я размещаю с использованием IIS. У меня проблема, когда все мои POST-запросы возвращают 404 страницы. Мои запросы GET работают нормально.

Вот мой server.js

const express = require('express');
const cors = require('cors');
const puppeteer = require('puppeteer');

const { createUrl } = require('./urlBuilder');

const app = express();
app.use(express.json());
app.use(cors());

const pdfConfig = {
  format: 'A4',
  printBackground: true,
  margin: {
    top: '1cm',
    bottom: '1cm',
    left: '1.5cm',
    right: '1.5cm'
  }
};

// Our first route
app.get('/test', function (req, res) {
  res.send('Hello Dev!');
});

app.post('/create-pdf', function(req, res) {
  const url = createUrl(req.body);
  const browser = puppeteer.launch();

  browser.then((brw) => {
    const page = brw.newPage();
    page.then((pg) => {
      pg.goto(url).then(() => {
        pg.emulateMedia('screen').then(() => {
          const buffer = pg.pdf(pdfConfig);
          buffer.then((buf) => {
            brw.close();
            res.end(buf.toString('base64'));
          })
        })
      })
    })
  });
});

Вот мой web.config

<configuration>
    <system.webServer>
        <!-- indicates that the server.js file is a node.js application
        to be handled by the iisnode module -->

        <handlers>
            <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
        </handlers>

        <rewrite>
            <rules>
                <rule name="sendToNode">
                    <match url="/*" />
                    <action type="Rewrite" url="server.js" />
                </rule>
            </rules>
        </rewrite>

    </system.webServer>
</configuration>

Если я использую REST-клиент, такой как бессонница и GET http://example.com/test, он работает нормально, но POST к http://example.com/create-pdf возвращает 404. Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 14 января 2019

Метод запроса по умолчанию для перезаписи / перенаправления всегда GET. Для других переписываний глаголов их нужно явно добавлять.

Добавьте новое правило точно так же, как у вас, и добавьте в правило следующее условие:

<conditions>
  <add input="{REQUEST_METHOD}" pattern="^POST$" />
</conditions>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...