详解webpack-dev-server 设置反向代理解决跨域问题


Posted in Javascript onApril 18, 2018

一、设置代理的原因

现在对前端开发的要求越来越高,并且随着自动化以及模块化的诞生,前后端开发模式越来越流行。后端只负责接口,前端负责数据展示、逻辑处理。但是前后端开发模式,有一个重要的问题,就是跨域问题。

 二、如何配置webpack的代理

webpack代理需要另外一个插件:webpack-dev-server 

webpack-dev-server配置代理非常的方便,只需要条件一个proxy属性,然后配置相关的参数就可以了:

var webpack = require('webpack');
var WebpackDevServer = require("webpack-dev-server");
var path = require('path');
var CURRENT_PATH = path.resolve(__dirname); // 获取到当前目录
var ROOT_PATH = path.join(__dirname, '../'); // 项目根目录
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 = {

  //项目的文件夹 可以直接用文件夹名称 默认会找index.js ,也可以确定是哪个文件名字
  entry: {
    app: ['./src/js/index.js'],
    vendors: ['jquery', 'moment'], //需要打包的第三方插件
    // login:['./src/css/login.less']
  },

  //输出的文件名,合并以后的js会命名为bundle.js
  output: {
    path: path.join(__dirname, "dist/"),
    publicPath: "http://localhost:8088/dist/",
    filename: "bundle_[name].js"
  },
  devServer: {
    historyApiFallback: true,
    contentBase: "./",
    quiet: false, //控制台中不输出打包的信息
    noInfo: false,
    hot: true, //开启热点
    inline: true, //开启页面自动刷新
    lazy: false, //不启动懒加载
    progress: true, //显示打包的进度
    watchOptions: {
      aggregateTimeout: 300
    },
    port: '8088', //设置端口号
    //其实很简单的,只要配置这个参数就可以了
    proxy: {
      '/index.php': {
        target: 'http://localhost:80/index.php',
        secure: false
      }
    }
  } 
..........
};

上面实例中我们把本地的端口号设置为了:8088,如果这个时候接口放在了端口为80的服务器上,并且我们请求的接口url如下:http://localhost:80/index.php

 这个时候只需要在proxy使用正则表达式匹配/index.php,然后 匹配到 转向target设置的目标接口;这个时候使用ajax请求接口就不要写上目标接口的域名,只需要写上index.php就可以了。

$.ajax({
    type: 'GET',
    url: '/index.php',
    data: {},
    dataType: 'json',
    beforeSend: function () {
    },
    success: function (data) {

    },
    error: function (error) {

    }
  });

上面ajax请求的时候proxy 代理就会自动转向target设置的接口路径:http://localhost:80/index.php

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
自动生成文章摘要的代码[JavaScript 版本]
Mar 20 Javascript
ext监听事件方法[初级篇]
Apr 27 Javascript
原生js实现shift/ctrl/alt按键的获取
Apr 08 Javascript
jQuery插件的写法分享
Jun 12 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
Feb 04 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
vue 项目如何引入微信sdk接口的方法
Dec 18 Javascript
Vue组件中的data必须是一个function的原因浅析
Sep 03 Javascript
JS canvas绘制五子棋的棋盘
May 28 Javascript
JavaScript变量作用域及内存问题实例分析
Jun 10 Javascript
Vue性能优化的方法
Jul 30 Javascript
微信小程序实现点击页面出现文字
Sep 21 Javascript
jQuery实现的两种简单弹窗效果示例
Apr 18 #jQuery
vue双向数据绑定知识点总结
Apr 18 #Javascript
浅析vue中常见循环遍历指令的使用 v-for
Apr 18 #Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 #Javascript
JS实现二维数组横纵列转置的方法
Apr 17 #Javascript
redux中间件之redux-thunk的具体使用
Apr 17 #Javascript
Vue进度条progressbar组件功能
Apr 17 #Javascript
You might like
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
php导出excel格式数据问题
2014/03/11 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
python如何实现int函数的方法示例
2018/02/19 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
自行车租赁公司创业计划书
2014/01/28 职场文书
殡葬服务心得体会
2014/09/11 职场文书
计划生育证明格式范本
2014/09/12 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
见习报告的格式
2014/11/04 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL