反向代理解决开发阶段的接口跨域问题
最近使用白鹭引擎开发一个h5游戏,在请求后端的灰度接口发现跨域了,然后后端也不太方便临时设置接口跨域头,开发阶段和调试阶段就比较蛋疼。
不过,解决跨域问题也很简单,只要再请求头上加上一下几个跨域头即可
Access-Control-Allow-Origin: '*'
Access-Control-Allow-Methods: 'GET, POST'
Access-Control-Allow-Headers: 'X-Requested-With,content-type, Authorization'
所以就在本地起了一个代理服务器,开发的时候,请求本机的代理服务器即可,服务器将请求代理到真实的灰度环境,拿到response加上跨域头即可,贴下代码记录下
import express from 'express';
import request from 'request';
const app = express();
const path = ''; // 要代理的路径
const host = ''; // 要代理的真实服务器
app.all('*', (req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader(
'Access-Control-Allow-Headers',
'X-Requested-With,content-type, Authorization'
);
next();
});
app.use(path, (req, res) => {
const { originalUrl } = req;
req.pipe(request(`https://${host}${originalUrl}`)).pipe(res);
});
app.listen(8080, function() {
console.log('http://localhost:8080');
});