在Vite的代理中将客户端真实的IP传递给后台:
export default defineConfig({
server: {
proxy: {
'/api': {
target: 'http://backend-server.com',
changeOrigin: true,
configure: (proxy, options) => {
proxy.on('proxyReq', (proxyReq, req) => {
// 添加真实客户端IP到请求头
proxyReq.setHeader('X-Forwarded-For', req.socket.remoteAddress)
proxyReq.setHeader('X-Real-IP', req.socket.remoteAddress)
})
}
}
}
}
})
实现原理:
- 使用proxyReq事件钩子在代理请求发出前修改请求头
- req.socket.remoteAddress获取客户端真实IP
- 通过X-Forwarded-For和X-Real-IP两个标准头字段传递IP
- changeOrigin: true确保Host头正确传递
评论