不动产项目汇总:

1.解决跨域问题:

解决办法:使用node-mitmproxy模块进行代理

// proxy.js文件
//引入模块
const mitmproxy = require('node-mitmproxy');

//定义需要代理的域名
const hosts = ['****.com.cn', '****.com.cn', '****.cn'];
//定义需要排除的接口
const ignorePathes = ['/wx', '/zwapi'];
//创建代理
mitmproxy.createProxy({
    sslConnectInterceptor: function(req, cltSocket, head) {
        return false;
    },



    //拦截客户端发起的请求
    requestInterceptor: function(rOptions, req, res, ssl, next) {
    //参数说明:
    //requestOptions:客户端请求参数
    //clientReq: 客户端请求,
    //clientRes: 客户端响应,
    //ssl: 该请求是否为https
    //next: 回调函数,执行完拦截逻辑后调用该方法
     console.log(rOptions.hostname, rOptions.port, rOptions.path);
//判断拦截的请求域名是否是需要代理的域名 如果有则把域名和端口改为本地
        if ( hosts.indexOf(rOptions.hostname) > -1 &&
          !ignorePathes.some(p => rOptions.path.startsWith(p))
        )   {
            rOptions.hostname = 'localhost';
            rOptions.port = 8080;
        }
        next();
    },
//拦截服务端请求/响应
    responseInterceptor(req, res, proxyReq, proxyRes, ssl, next) {
        console.log(req.url, proxyRes.statusCode);
        next();
    },
});

使用方式:
在package.json 的scripts中添加 startproxy
依赖模块中加入node-mitmproxy

  "scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "build": "node build/build.js",
    "startproxy": "node build/proxy.js"
  },
  "devDependencies": {
      "node-mitmproxy": "^3.1.0"
}
npm run startproxy

代理开启后 默认开启的端口是  6789
在浏览器端设置代理:本地6789端口 让浏览器发起的请求都经过proxy.js文件处理,
如果发起的请求满足拦截条件则改为访问本地文件
注意:配置完成后可能会出现Invalid Host header错误
解决办法  在webpack.dev.config.js 的 devServer中添加
disableHostCheck: true,

//todo proxyTable

//在build/config/index.js中添加
dev:{
   proxyTable: {
            "/wx": {
                target: "http://bdcgzh.cafewallet.com.cn",
                changeOrigin: true
            },
            "/zwapi": {
                target: "http://bdcgzh.cafewallet.com.cn",
                changeOrigin: true
            }
        },
}

你可能感兴趣的:(不动产项目汇总:)