nodeJS搭一个简单的(代理)web服务器
2018-11-26 07:54:38来源:博客园 阅读 ()
前端获取数据时经常遇见跨域问题,以前一直用nginx做反向代理。最近在用vuejs,发现webpack-dev-server的代理简单好用。于是仿照写了一个简单的web服务器,用于非webpack的项目。
1 const request = require('request'); 2 const express = require('express'); 3 const path = require('path'); 4 5 const app = express(); 6 7 const proxyTable = { 8 '/wcf': { 9 target: 'http://localhost/wcf' 10 } 11 }; 12 13 app.use(function(req, res,next) { 14 const url = req.url; 15 if (req.method == 'OPTIONS') { 16 console.log('options_url: ', url); 17 18 // res.header("Access-Control-Allow-Origin", req.headers.origin || '*'); 19 // res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With"); 20 // res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS"); 21 22 // res.header("Access-Control-Allow-Credentials", true); 23 24 res.status(200).send('OK'); 25 return; 26 } 27 28 // console.log('req_url: ', url); 29 next(); 30 }); 31 32 33 app.use(express.static(path.join(__dirname, 'static'))); 34 35 app.use('/', function(req, res) { 36 const url = req.url; 37 const proxy = Object.keys(proxyTable); 38 let not_found = true; 39 for (let index = 0; index < proxy.length; index++) { 40 const k = proxy[index]; 41 const i = url.indexOf(k); 42 if (i >= 0) { 43 not_found = false; 44 const element = proxyTable[k]; 45 const newUrl = element.target + url.slice(i+k.length); 46 req.pipe(request({url: newUrl, timeout: 60000},(err)=>{ 47 if(err){ 48 console.log('error_url: ', err.code,url); 49 res.status(500).send(''); 50 } 51 })).pipe(res); 52 break; 53 } 54 } 55 if(not_found) { 56 console.log('not_found_url: ', url); 57 res.status(404).send('Not found'); 58 } else { 59 console.log('proxy_url: ', url); 60 } 61 }); 62 63 const PORT = 8080; 64 app.listen(PORT, () => { 65 console.log('HTTP Server is running on: http://localhost:%s', PORT); 66 });
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Kz.layedit-layui.layedit富文本编辑器拓展
下一篇:前端思考
- JS简单去除数组中重复项的方法 2020-03-16
- jQuery异步提交表单的两种方式 2020-03-12
- JS判断浏览器是否安装flash插件的简单方法 2020-03-12
- nodejs中如何使用async模块 2020-02-22
- JavaScript简单下拉菜单特效 2020-02-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash