【五】gulp之用建立一個代理服務器(解決前端跨域問題)

為什么需要使用代理?

目前,前端發展飛速,前后端分離式開發已經不是新鮮事兒。

  • 1 如果前端只是靜態的頁面(不需要調用后端的api加載動態數據),那么前端直接在本地開發即可。
    即使是前后端分開部署,只需要單獨為前端啟動一個服務,使用gulp-connect即可。不會?(請戳gulp之用gulp-connect開啟一個本地webServer

  • 2 如果前端需要調用后端提供的接口呢?除非前后端部署在同一個服務器上,否則由于瀏覽器的限制是沒辦法跨域請求數據的。真實情況是,我們在本地開發時就需要訪問接口,這時后端的程序猿給你的往往是這樣一個地址 http://192.168.1.123/controller/action,有人說上傳代碼到http://192.168.1.123/放在一個目錄下不就行了,是啊!可以的。但是好麻煩有沒有,調試接口需要傳代碼上去!!!!

  • 3 如果我的數據是從其他的服務器來的呢?例如我想訪問豆瓣的開放接口

  $.post('https://api.douban.com/v2/book/1220562',{},function(data){
    console.log(data);
  })
豆瓣告訴你,不行!你跨域了!

所以,還是代理來的方便。

代理是個什么鬼?

代理請求通俗點講,就是把發往 a.com的請求,通過代理服務器發送到b.com。

怎么開啟一個代理?

代碼如下:

//服務端口
const PORT=8000;
//啟動服務的根目錄
const server_root='src'
//引用gulp
var gulp = require('gulp');
//引用gulp開啟服務的插件
var connect = require('gulp-connect');
//引用插件 gulp代理中間件插件
var proxy = require('http-proxy-middleware');

//開啟服務
gulp.task('proxyServer', function() {
    connect.server({
        root: [server_root],
        port: PORT,
        middleware: function(connect, opt) {
            return [
                proxy('/api',  {
                    target: 'https://api.douban.com/v2',//代理的目標地址
                    changeOrigin:true,//
                    pathRewrite:{//路徑重寫規則 
                        '^/api':''
                    }
                })
            ]
        }

    });
});

說明
'/api' =>匹配你要代理的請求地址前綴
target=》你要把請求代理到哪
pathRewrite =》是把你再頁面中寫的請求地址 某部分 重寫為后面的字符串
(例子中講 請求中寫的 /api 重寫為 空字符串)
也就是發往 /api/book/1220562的請求最終會被發往 https://api.douban.com/v2/book/1220562
頁面寫請求時的寫法

  $.post('/api/book/1220562',{},function(data){
    console.log(data);
  })

目錄結構

image.png

運行效果

image.png

結語

當然還有其他的方式,比如 node、cros、jsonp、phpheader、nginx設置代理

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,868評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,065評論 25 708
  • 3晚上回家約好了回妹妹家吃飯,滴滴師傅是個長得挺漂亮的美女,三環路有些堵車,但一路上并沒有太焦慮,因為有高德地圖,...
    玉露君閱讀 173評論 0 0
  • -----惠紫 剛結婚的前兩年,老公事業沒有起色,婚房是老公堅持買的,首付也是他東拼西湊的借來的,三天兩頭會有追債...
    蕙紫閱讀 550評論 0 2
  • 下午和老公開車去60公里外看望老公的戰友和他的父母,我們給老人帶去了豐厚的禮物,老人看到我們很開心,老兩口忙前忙后...