Last active
September 25, 2018 02:47
-
-
Save wxingheng/5143fc3cf1da069aaf50225dc5744156 to your computer and use it in GitHub Desktop.
express 反向代理 proxy 代理 解决平时开发时候的跨域请求
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
**方法一 ** | |
```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