我正在设置一个带有两个不同的React前端的nodejs API,发现我一直遇到CORS问题。
为了解决这个问题,我创建了3个服务器,2个用于前端,1个用于实际的API服务器,我的想法是,我将在2个代理服务器上进行身份验证,这些代理服务器上有react应用程序,然后将所有其他请求转发到api服务器,并在json web令牌中设置cookie的信息。
然而,在设置http-proxy-middleware并将changeOrigin设置为true时,我注意到cookie也会随请求沿着发送,这很棒。这就是changeOrigin要做的吗?它会对所有类型的请求都起作用吗?
下面是我设置代理选项的方法:
// routes
app.use('/api/auth', require('./routes/openRoutes/authRoutes'));
// api routes
const proxyOptions = {
target: gateway.url, // target host
changeOrigin: true,
onProxyReq: function onProxyReq(proxyReq, req, res) {
// add custom header to request
const id = req.user ? req.user.id : null;
const token = jwt.sign({
data: id
}, sessionSecret, { expiresIn: '1h' });
if (token) {
proxyReq.setHeader('authorization', `Bearer ${token}`);
}
},
logLevel: 'debug',
};
app.use('/api/admin/user', createProxyMiddleware(proxyOptions));
1条答案
按热度按时间camsedfj1#
changeOrigin除了
Host
之外,不会对cookie或任何其他请求头执行任何操作选项.更改原点:真/假,默认值:false -将主机标头的来源更改为目标URL
所以如果你的请求是这样的...
changeOrigin
唯一改变的是Host
这样上游服务就可以将请求路由到适当的基于名称的虚拟主机。