有段时间,不知何故,本地的请求通过node环境中的一个叫http-proxy-middleware的包转发本地请求到别人通过花生壳映射的内网后,总是请求失败,会报错:ORAY-ERROR-3。这个显然不会是朋友那边本地服务器的问题,因为这个服务放在公网上时,里面的服务都是可以用的。
我用的是vue-cli脚手架配套的webpack模版。经过尝试,发现只要修改一下转发的请求头里的Host字段即可。具体要修改的文件为:/build/dev-server.js,需要修改的地方见下面的代码:
// proxy api requests Object.keys(proxyTable).forEach(function (context) { var options = proxyTable[context] if (typeof options === 'string') { options = { target: options } } options.headers = { 'Host': config.hostUsed } app.use(proxyMiddleware(options.filter || context, options)) })
代码中config.hostUsed即为花生壳内网映射时对应的外网地址,这个值不需要包含http或https这种协议字符,只需要’www.example.com’这部分就可以了。