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

1、设置代理的缘由php


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

 

2、如何配置webpack的代理html



webpack代理须要另一个插件:webpack-dev-server前端

 

webpack-dev-server配置代理很是的方便,只须要条件一个proxy属性,而后配置相关的参数就能够了:

node

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以下:

jquery

http://localhost:80/index.php


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

webpack

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

        },
        error: function (error) {

        }
    });



上面ajax请求的时候proxy 代理就会自动转向target设置的接口路径:

web

http://localhost:80/index.php
相关文章
相关标签/搜索