POST请求不会通过http-proxy转发

时间:2019-08-13 15:52:52

标签: javascript express proxy reverse-proxy http-proxy

我正在尝试构建一个反向代理服务器,其中url具有一个id(?id = 1),并且代理服务器重定向到端口8000 + id!

因此,当我直接转到正确的端口时,它可以工作,但是当我使用代理时,浏览器选项卡将无休止地加载。

它也可以与GET-Request一起使用,但是POST-Request不起作用!

这是我的反向代理:

const express = require(`express`);
const proxy = require(`http-proxy`);

const ps = proxy.createProxyServer();
const app = express();
app.listen(8000);

app.all(`*`, (req, res) => {
    if (req.query.id) {
        try { const id = parseInt(req.query.id);
            ps.web(req, res, { target: `${req.protocol}://${req.hostname}:${8000+id}` });
        } catch (err) { res.redirect(redirectUrl); }
    } else { res.redirect(redirectUrl); }
});


ps.on(`error`, (err, req, res) => {
    res.redirect(redirectUrl);
});

这是我在端口8001上运行的网站:

app.get(`*`, (req, res) => {
    res.render(`index`, {
        link: `?id=1`,
        name: `name`,
        value: `value`,
        text: `text`,
    });
});

app.post(`*`, (req, res) => {
    res.render(`index`, {
        link: `?id=1`,
        name: `name`,
        value: `value`,
        text: `text`,
    });
});

这是我的html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <form action={{link}} method="POST">
            <button name={{name}} value={{value}}>
                <h4> {{text}} </h4>
            </button>
        </form>
    </body>
</html>

通过这种方式,我还使用了Express-Handlebars,因此html中的{{}}就是为此!

任何想法的忠实:)

0 个答案:

没有答案