node.js轻松搭建一个服务器

作者 : 开心源码 本文共1542个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共140人阅读

前台获取数据时经常遇见跨域问题,以前一直用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: '10   }11 };交流学习圈58273593612 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 交流学习圈58273593633 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 交流学习圈58273593663 const PORT = 8080;64 app.listen(PORT, () => {65   console.log66 });

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » node.js轻松搭建一个服务器

发表回复