不动产项目汇总:

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
            }
        },
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面试题一:https://github.com/jimuyouyou/node-interview-questio...
    R_X阅读 5,572评论 0 5
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 6,392评论 0 2
  • 1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...
    七寸知架构阅读 6,235评论 1 50
  • 1 Node.js模块的实现 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着...
    zlx_2017阅读 5,136评论 0 1
  • 什么是前端开发人员? 在传统意义上,前端可以定义成应用程序的用户界面,也就是面向客户的部分。然而,近年来这种情况似...
    前端程序员666阅读 6,130评论 1 21