在Express App中配置代理中间件

我的应用程序由前端服务器(React,用作静态)和后端服务器(Express)组成。我发现,每当我发送带有自定义标头的请求时,都会发送预检请求。这增加了我的应用程序的延迟。我想避免这些预检请求。

例如,

前端:example.web.com

后端:example.api.com

找到的一种方法是在我的后端中设置代理中间件,以便将请求从后端服务器发送到后端服务器,而不是从前端(浏览器)发送到后端。

const proxy = require('http-proxy-middleware');
const express = require('express');
const cors = require('cors');

const app = express();
app.use(cors({
    origin: "*",methods: "GET,HEAD,PUT,PATCH,POST,DELETE",allowedHeaders: "authorization",}));
let options = {
    target: 'http://localhost:5001/',changeOrigin: true,logLevel: 'debug',onError: function onError(err,req,res) {
        console.log('Something went wrong with the proxy middleware.',err)
        res.end();
    }
};
app.use("/",proxy(options),indexRouter);

我希望在发送非“简单”请求时避免执行预检请求。 我知道代理中间件方法可以避免预检请求,但是我不知道在Express应用程序中进行配置的正确方法。

shandian200567 回答:在Express App中配置代理中间件

http-proxy-middleware将向您发送从目标api服务器获得的响应。但是,它不会继续到下一个中​​间件。

app.use("/",proxy(options))意味着对服务器的任何请求都将被代理到目标api:对yourserver.com/items的请求将被代理到targetapi.com/items。如果您希望拥有自己的路由,请为中间件(app.use("/api",proxy(options)))使用前缀,或在代理之前 挂载其他中间件。

本文链接:https://www.f2er.com/3126396.html

大家都在问