反向代理解决开发阶段的接口跨域问题

905 阅读1分钟

反向代理解决开发阶段的接口跨域问题

最近使用白鹭引擎开发一个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');
});

github地址