nodejs代理服务器

  目录

nodejs代理服务器简单实现

nodejs代理服务

最近在与后台同事联调的时候,出现了点故障,跨域,这个经常碰到很好解决的问题,但是一般情况下需要前后端一起配合来解决,比如jsonp,或者h5后端在返回头加上允许跨域的头设置,但是如果后台同事是个小白,问啥啥不明白,也是没招了。我之前还用过将chrome的跨域设置给禁掉的方法,但是这次不知道为啥,也不好使了。最后,只能是用代理这种方式,我现在用的是vue框架,其实vue的脚手架已经集成了跨域功能,只需要配置一下就可以,但是,现在框架这么多,前一阵子还react,angular的项目,最近有换成vue,配置的话,肯定要去查看api,记不住啊,而且,版本不同,设置方法也不同,不如自己写一个,这样多简单,需要的时候把代理服务开启就搞定了。于是乎,自己写一个,当然,稍微想一下就知道,代理的原理,就是利用nodejs在中间做一次请求以及数据返回,不过自己写还得思考,上网找一下多简单,baidu一搜索,哇靠,第一个映入眼帘的就是nodejs代理服务8行代码,嗯,就是这么简单,废话不多说,上代码,当然,自己还得加工一下哦。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var express = require('express');
var request = require('request');
var app = express();

const proxyUrl = process.argv[2] || 'http://127.0.0.1:8888'; // 如果有传入的代理url,使用它
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
if(req.method=="OPTIONS") res.send(200); // 让options请求快速返回
else next();
});

app.use('/', function(req, res) {
var url = proxyUrl + req.url;
req.pipe(request(url)).pipe(res);
});
app.listen(process.env.PORT || 3000, ()=>{
console.log('代理服务器,在3000端口已经开启');
});

再把package.json文件内容贴出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"name": "node-proxy",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"serve": "node server http://127.0.0.1:9000"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.3",
"request": "^2.88.0"
}
}

源码在这里