详解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 相关文章推荐
Z-Blog中用到的js代码
Mar 15 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
Jan 31 Javascript
基于jQuery实现仿淘宝套餐选择插件
Mar 04 Javascript
JavaScript AOP编程实例
Jun 16 Javascript
移动Web中图片自适应的两种JavaScript解决方法
Jun 18 Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 Javascript
JQuery实现Ajax加载图片的方法
Dec 24 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
Vue三层嵌套路由的示例代码
May 05 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
小程序如何在不同设备上自适应生成海报的实现方法
Aug 20 Javascript
js+css实现全屏侧边栏
Jun 16 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
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python快速从注释生成文档的方法
2016/12/26 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
Flask框架信号用法实例分析
2018/07/24 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
几个Linux面试题笔试题
2012/12/01 面试题
竞选班长自荐书范文
2014/03/09 职场文书
教师考核评语
2014/04/28 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
企业授权委托书范本
2014/09/22 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
MySQL 数据类型详情
2021/11/11 MySQL