我使用 http-proxy-middleware 在 firebase 上创建了一个代理。 它适用于 GET 请求,但不会传递我在 POST 请求中通过正文发送的数据。我做了一些研究,并将“onProxyReq”方法添加到选项中。这样,当我发送 json 正文时它有效,但当我发送表单数据时则无效。
const functions = require("firebase-functions");
const express = require("express");
var bodyParser = require("body-parser");
const {
createProxyMiddleware,
fixRequestBody,
} = require("http-proxy-middleware");
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
var restream = function (proxyReq, req, res, options) {
if (req.body) {
let bodyData = JSON.stringify(req.body);
proxyReq.setHeader("Content-Type", "application/json");
proxyReq.setHeader("Content-Length", Buffer.byteLength(bodyData));
proxyReq.write(bodyData);
}
};
app.use(
"/",
createProxyMiddleware({
target: "http://IPADDRESS:8080/api",
changeOrigin: true,
onProxyReq: restream,
bodyParser: false,
})
);
exports.api = functions.https.onRequest(app);
此代码适用于 json body。
将“application/json”更改为“multipart/form-data”不起作用。
我想要的只是重定向标头中的 JWT 令牌和正文中的 FormData。 最好的方法应该是什么?