如何使用http-proxy-middleware代理表单数据?

问题描述 投票:0回答:1

我使用 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。 最好的方法应该是什么?

node.js firebase express proxy reverse-proxy
1个回答
0
投票

您需要使用

multer

Add

app.use(multer().none());
- 这将向请求对象添加一个正文对象和一个或多个文件对象。

看这里

© www.soinside.com 2019 - 2024. All rights reserved.