詳解webpack-dev-server 設(shè)置反向代理解決跨域問(wèn)題
一、設(shè)置代理的原因
現(xiàn)在對(duì)前端開發(fā)的要求越來(lái)越高,并且隨著自動(dòng)化以及模塊化的誕生,前后端開發(fā)模式越來(lái)越流行。后端只負(fù)責(zé)接口,前端負(fù)責(zé)數(shù)據(jù)展示、邏輯處理。但是前后端開發(fā)模式,有一個(gè)重要的問(wèn)題,就是跨域問(wèn)題。
二、如何配置webpack的代理
webpack代理需要另外一個(gè)插件:webpack-dev-server
webpack-dev-server配置代理非常的方便,只需要條件一個(gè)proxy屬性,然后配置相關(guān)的參數(shù)就可以了:
var webpack = require('webpack'); var WebpackDevServer = require("webpack-dev-server"); var path = require('path'); var CURRENT_PATH = path.resolve(__dirname); // 獲取到當(dāng)前目錄 var ROOT_PATH = path.join(__dirname, '../'); // 項(xiàng)目根目錄 var MODULES_PATH = path.join(ROOT_PATH, './node_modules'); // node包目錄 var BUILD_PATH = path.join(ROOT_PATH, './dist'); // 最后輸出放置公共資源的目錄 var HtmlWebpackPlugin = require('html-webpack-plugin'); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var CopyWebpackPlugin = require('copy-webpack-plugin'); module.exports = { //項(xiàng)目的文件夾 可以直接用文件夾名稱 默認(rèn)會(huì)找index.js ,也可以確定是哪個(gè)文件名字 entry: { app: ['./src/js/index.js'], vendors: ['jquery', 'moment'], //需要打包的第三方插件 // login:['./src/css/login.less'] }, //輸出的文件名,合并以后的js會(huì)命名為bundle.js output: { path: path.join(__dirname, "dist/"), publicPath: "http://localhost:8088/dist/", filename: "bundle_[name].js" }, devServer: { historyApiFallback: true, contentBase: "./", quiet: false, //控制臺(tái)中不輸出打包的信息 noInfo: false, hot: true, //開啟熱點(diǎn) inline: true, //開啟頁(yè)面自動(dòng)刷新 lazy: false, //不啟動(dòng)懶加載 progress: true, //顯示打包的進(jìn)度 watchOptions: { aggregateTimeout: 300 }, port: '8088', //設(shè)置端口號(hào) //其實(shí)很簡(jiǎn)單的,只要配置這個(gè)參數(shù)就可以了 proxy: { '/index.php': { target: 'http://localhost:80/index.php', secure: false } } } .......... };
上面實(shí)例中我們把本地的端口號(hào)設(shè)置為了:8088,如果這個(gè)時(shí)候接口放在了端口為80的服務(wù)器上,并且我們請(qǐng)求的接口url如下:http://localhost:80/index.php
這個(gè)時(shí)候只需要在proxy使用正則表達(dá)式匹配/index.php,然后 匹配到 轉(zhuǎn)向target設(shè)置的目標(biāo)接口;這個(gè)時(shí)候使用ajax請(qǐng)求接口就不要寫上目標(biāo)接口的域名,只需要寫上index.php就可以了。
$.ajax({ type: 'GET', url: '/index.php', data: {}, dataType: 'json', beforeSend: function () { }, success: function (data) { }, error: function (error) { } });
上面ajax請(qǐng)求的時(shí)候proxy 代理就會(huì)自動(dòng)轉(zhuǎn)向target設(shè)置的接口路徑:http://localhost:80/index.php
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js實(shí)現(xiàn)頁(yè)面打印功能實(shí)例代碼(附去頁(yè)眉頁(yè)腳功能代碼)
js實(shí)現(xiàn)頁(yè)面打印功能實(shí)例代碼(附去頁(yè)眉頁(yè)腳功能代碼)2009-12-12antd designable平臺(tái)的組件拖拽功能實(shí)現(xiàn)代碼
這篇文章主要介紹了antd designable平臺(tái)的組件拖拽功能實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07JavaScript代碼實(shí)現(xiàn)圖片循環(huán)滾動(dòng)效果
這篇文章主要介紹了JavaScript代碼實(shí)現(xiàn)圖片循環(huán)滾動(dòng)效果的相關(guān)資料,非常不錯(cuò),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06JS字符串與二進(jìn)制的相互轉(zhuǎn)化實(shí)例代碼詳解
這篇文章主要介紹了JS字符串與二進(jìn)制的相互轉(zhuǎn)化 ,在文中給大家提到了Js之字符串和字節(jié)碼之間的相互轉(zhuǎn)換,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06跟我學(xué)習(xí)javascript的最新標(biāo)準(zhǔn)ES6
跟我學(xué)習(xí)javascript的最新標(biāo)準(zhǔn)ECMAScript 6,ES6(ECMAScript 6)是即將到來(lái)的新版本JavaScript語(yǔ)言的標(biāo)準(zhǔn),代號(hào)harmony,感興趣的小伙伴們可以參考一下2015-11-11JavaScript中誤用/g導(dǎo)致的正則test()無(wú)法正確重復(fù)執(zhí)行的解決方案
這篇文章主要介紹了JavaScript中誤用/g導(dǎo)致的正則test()無(wú)法正確重復(fù)執(zhí)行的解決方案的相關(guān)資料,需要的朋友可以參考下2016-07-07JavaScript控制兩個(gè)列表框listbox左右交換數(shù)據(jù)的方法
這篇文章主要介紹了JavaScript控制兩個(gè)列表框listbox左右交換數(shù)據(jù)的方法,實(shí)例分析了javascript操作列表框listbox的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03JavaScript 對(duì)Cookie 操作的封裝小結(jié)
通過(guò)本篇,您能了解到: 匿名函數(shù) 閉包的產(chǎn)生 JavaScript實(shí)現(xiàn)private 以及 public 訪問(wèn)權(quán)限 document.cookie 的操作2009-12-12