全栈07 Express转发前端请求实现跨域

http模块和https模块

使用了express的http模块实现了对前端http请求的简单转发,从而实现了跨域请求

const express = require('express');
const http = require('http');

const router = express.Router();

router.route('/')
  .get((req, res) => {
    const { url } = req.query;

    const proxyReq = http.request(url, remoteRes => remoteRes.pipe(res));

    proxyReq.end();
  });

module.exports = router;

router.use('/proxy', proxy);

使用的时候:

export const QUERY_URL = 'https://wallstreetcn.com/live/global';
const X_URL = `/api/proxy?url=${encodeURIComponent(QUERY_URL)}`;

fetch(X_URL).then(v => console.log(v.text()))

但是这样有一个问题,如果请求的资源类型为页面资源(文本),如果是经过gzip压缩的,直接处理会返回乱码,需要使用zlib.createGunzip()方法进行解压缩处理后再进行转发就可以了

你可能感兴趣的:(全栈)