我正在尝试构建一个反向代理服务器,其中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中的{{}}就是为此!
任何想法的忠实:)