| 
                         2、代理功能 
- // 代理列表 
 - const proxyTable = { 
 -   '/api': { 
 -     target: 'http://127.0.0.1:8090/api', 
 -     changeOrigin: true 
 -   } 
 - } 
 - // 处理代理列表 
 - function processProxy(req, res) {   
 -   const requestUrl = req.url   
 -   const proxy = Object.keys(proxyTable)   
 -   let not_found = true 
 -   for (let index = 0; index < proxy.length; index++) {     
 -       const k = proxy[index]     
 -       const i = requestUrl.indexOf(k)     
 -       if (i >= 0) { 
 -         not_found = false 
 -         const element = proxyTable[k]       
 -         const newUrl = element.target + requestUrl.slice(i + k.length)       
 -         if (requestUrl !== newUrl) {        
 -           const u = url.parse(newUrl, true)         
 -           const options = { 
 -             hostname : u.hostname,  
 -             port     : u.port || 80, 
 -             path     : u.path,        
 -             method   : req.method, 
 -             headers  : req.headers, 
 -             timeout  : 6000 
 -           }         
 -           if(element.changeOrigin){ 
 -             options.headers['host'] = u.hostname + ':' + ( u.port || 80) 
 -           }         
 -           const request = http 
 -           .request(options, response => {             
 -             // cookie 处理 
 -             if(element.changeOrigin && response.headers['set-cookie']){ 
 -               response.headers['set-cookie'] = getHeaderOverride(response.headers['set-cookie']) 
 -             } 
 -             res.writeHead(response.statusCode, response.headers) 
 -             response.pipe(res) 
 -           }) 
 -           .on('error', err => {            
 -             res.statusCode = 503 
 -             res.end() 
 -           }) 
 -         req.pipe(request) 
 -       }       
 -       break 
 -     } 
 -   }   
 -   return not_found 
 - } 
 - function getHeaderOverride(value){   
 -   if (Array.isArray(value)) {       
 -    for (var i = 0; i < value.length; i++ ) { 
 -      value[i] = replaceDomain(value[i]) 
 -    } 
 -   } else { 
 -     value = replaceDomain(value) 
 -   }   
 -   return value 
 - } 
 - function replaceDomain(value) {   
 -   return value.replace(/domain=[a-z.]*;/,'domain=.localhost;').replace(/secure/, '') 
 - } 
 
  
3、完整版                         (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |