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