Skip to content

Instantly share code, notes, and snippets.

@wxingheng
Last active September 25, 2018 02:47
Show Gist options
  • Save wxingheng/5143fc3cf1da069aaf50225dc5744156 to your computer and use it in GitHub Desktop.
Save wxingheng/5143fc3cf1da069aaf50225dc5744156 to your computer and use it in GitHub Desktop.
express 反向代理 proxy 代理 解决平时开发时候的跨域请求
**方法一 **
```language
/**
* 基于 express request 的反向代理
*/
var express = require('express');
var request = require('request');
var app = express();
// 添加静态资源
app.use('/', express.static('./'));
// 代理 将 /service/dashboard 转发到 http://dashboard.stpass.com/service/dashboard
app.use('/service/dashboard', function(req, res) {
var url = 'http://dashboard.stpass.com/service/dashboard' + req.url;
req.pipe(request(url)).pipe(res);
});
// 开启本地服务 3008 端口
app.listen(process.env.PORT || 3008);
```
**方法二 **
```language
const express = require('express');
const timeout = require('connect-timeout');
const proxy = require('http-proxy-middleware');
const app = express();
// 这里从环境变量读取配置,方便命令行启动
// HOST 指目标地址
// PORT 服务端口
// https://dashboard.bloodcloud.com/service/dashboard
const {
HOST = 'http://dashboard.stpass.com', PORT = '3300'
} = process.env;
// 超时时间
const TIME_OUT = 30 * 1e3;
// 设置端口
app.set('port', PORT);
// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
if (!req.timedout) next();
});
// 静态页面
// 这里一般设置你的静态资源路径
app.use('/', express.static('./'));
// 反向代理(这里把需要进行反代的路径配置到这里即可)
app.use('/service/dashboard', proxy({
target: HOST,
changeOrigin: true
}));
// 监听端口
app.listen(app.get('port'), () => {
console.log(`server running @${app.get('port')}`);
});
```
**需要注意 代理配置的部分应该写在静态资源的前面**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment