亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

nodejs搭建web服務(wù)器(簡單代理)

J4ck_Chan / 1601人閱讀

摘要:前端獲取數(shù)據(jù)時(shí)經(jīng)常會(huì)遇到跨域問題,用做反向代理就可以解決此問題。但是屬于中間件代理,不同開發(fā)者布署的服務(wù)器地址可能不一樣,這樣的配置就不能做到通用了。那能不能仿照寫了一個(gè)簡單的服務(wù)器,用于非的項(xiàng)目呢。

前端獲取數(shù)據(jù)時(shí)經(jīng)常會(huì)遇到跨域問題,用 nginx 做反向代理就可以解決此問題。但是 nginx 屬于中間件代理,不同開發(fā)者布署的 web 服務(wù)器地址可能不一樣,這樣 nginx 的配置就不能做到通用了。

如果能有一個(gè)客戶端代理,隨著項(xiàng)目源代碼提交,這樣就可以免去不同開發(fā)者的代理配置。webpack-dev-server 就是這樣的一個(gè)客戶端代理,但是如果項(xiàng)目沒有用到 webpack,那就沒辦法用了。那能不能仿照寫了一個(gè)簡單的 web 服務(wù)器,用于非 webpack 的項(xiàng)目呢。下面是代碼,望大佬們批評指正。

const request = require("request");
const express = require("express");
const path = require("path");

const app = express();

// 代理配置
const proxyTable = {  
    "/api": {
        target: "http://localhost/api" 
    }
};
app.use(function(req, res,next) {  
    const url = req.url;  
    if (req.method == "OPTIONS") {      
      console.log("options_url: ", url); 
      
       //  設(shè)置cors 跨域
      // res.header("Access-Control-Allow-Origin", req.headers.origin || "*");
      // res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
      // res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

      // 設(shè)置 cookie
      // res.header("Access-Control-Allow-Credentials", true);
      
      res.status(200).send("OK");     
      return;
    } 
    // console.log("req_url: ", url);
    next();
});

// 設(shè)置靜態(tài)目錄
app.use(express.static(path.join(__dirname, "static")));

app.use("/", function(req, res) {  
      const url = 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 = url.indexOf(k);   
          if (i >= 0) {     
              not_found = false;     
              const element = proxyTable[k];      
              const newUrl = element.target + url.slice(i+k.length);
              req.pipe(request({url: newUrl, timeout: 60000},(err)=>{
                  if(err){          
                      console.log("error_url: ", err.code,url);           
                      res.status(500).send("");
                  }     
              })).pipe(res);      
              break;
          } 
      }  
      if(not_found) {    
          console.log("not_found_url: ", url);
          res.status(404).send("Not found");
      } else {    
          console.log("proxy_url: ", url);
      }
});

// 監(jiān)聽端口      
const PORT = 8080;
app.listen(PORT, () => {  
    console.log("HTTP Server is running on: http://localhost:%s", PORT);
});

PS:static 放靜態(tài)頁面

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/100533.html

相關(guān)文章

  • 簡單的前后端分離部署(Koa2)

    摘要:既然前段工程化是基于,那么選擇做前后端分離部署也是理所應(yīng)當(dāng)?shù)?。有了這三個(gè)東西,我們就可以搭建出最簡單的前端服務(wù)器了。 前后端分離開發(fā)應(yīng)該已經(jīng)是很多公司的標(biāo)配了,然而,在前端工程化的體系下,開發(fā)環(huán)境代碼和生產(chǎn)環(huán)境代碼往往是平級的,不再是整個(gè)文件夾往服務(wù)器上一扔就了事,這讓每次的部署過程相當(dāng)繁瑣。 如下是常見的項(xiàng)目目錄: Project └──javaSrc └──app ...

    SegmentFault 評論0 收藏0
  • 十分鐘搭建centos+nodejs+nestjs+caddy+pm2線上環(huán)境

    摘要:安裝及線上環(huán)境配置安裝官方安裝說明地址執(zhí)行命令至此,安裝完成版本查看安裝官方文檔地址首次安裝執(zhí)行命令以后創(chuàng)建項(xiàng)目只需在你需要的路徑下執(zhí)行開發(fā)測試環(huán)境下直接執(zhí)行以下命令啟動(dòng)項(xiàng)目后面加上可以在修改現(xiàn)有文件后自動(dòng)進(jìn)行重啟瀏覽器輸入即可 centos+node.js+nest.js+caddy+pm2安裝及線上環(huán)境配置 node.js安裝 官方安裝說明地址 https://github.com...

    xiaoqibTn 評論0 收藏0
  • 公司項(xiàng)目NODEJS實(shí)踐0.1[ ubuntu,nodejs,nginx...]

    摘要:創(chuàng)建成功后進(jìn)入文件夾執(zhí)行執(zhí)行作用創(chuàng)建文件,維護(hù)項(xiàng)目的依賴文件解釋創(chuàng)建文件執(zhí)行作用用系統(tǒng)的編輯器打開文件。我的技術(shù)新群上一篇前后端分離項(xiàng)目實(shí)踐分析下一篇公司項(xiàng)目實(shí)踐 一、前言 前端如何獨(dú)立用nodeJs實(shí)現(xiàn)一個(gè)簡單的注冊、登錄功能,是不是只用nodejs+sql就可以了?其實(shí)是可以實(shí)現(xiàn),但離實(shí)際應(yīng)用還有距離,那要怎么做才是實(shí)際可用的。 網(wǎng)上有很多nodeJs的示例,包括和 sql /...

    cppprimer 評論0 收藏0
  • 用gulp+mock實(shí)現(xiàn)前后端分離

    摘要:當(dāng)然需要的工具不只有這些,其他的一些可選工具還有文件壓縮壓縮時(shí)用到的文件重命名檢查一般編輯器自帶校驗(yàn)提示工具等等,具體根據(jù)項(xiàng)目需要安裝。 gulp 前端自動(dòng)化構(gòu)建工具 需要配置nodejs環(huán)境, 利用npm安裝全局gulp,安裝后可以輸入gulp指令。 npm install gulp -g 創(chuàng)建項(xiàng)目目錄、初始化npm包、gulp npm init gulp init 下載gul...

    dailybird 評論0 收藏0
  • MEVN 架構(gòu)(MongoDB + Express + Vue + NODEJS搭建

    摘要:連接數(shù)據(jù)庫如果不自己創(chuàng)建默認(rèn)數(shù)據(jù)庫會(huì)自動(dòng)生成地址跟第一步的地址對應(yīng)?,F(xiàn)在回過頭來看里面的入口文件最后,我們在瀏覽器輸入,就會(huì)跳到。到此為止,我們就完成了整個(gè)前后端各自開發(fā)到正式部署的流程。 一個(gè)完整的網(wǎng)站服務(wù)架構(gòu)包括:1、web frame ---這里應(yīng)用express框架2、web server ---這里應(yīng)用nodejs3、Database ---這里應(yīng)用monggoDB4、...

    Lsnsh 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<