vite.proxy.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const express = require('express');
  2. const http = require('http');
  3. const httpProxy = require('http-proxy');
  4. const app = express();
  5. const fromPort = 80;
  6. const toPort = 8080;
  7. const host = 'localhost';
  8. app.set('etag', false);
  9. app.use((req, res, next) => {
  10. res.set('Cache-Control', 'no-store');
  11. next();
  12. });
  13. app.get('*', async(req, res) => {
  14. const promise = fetch(`http://${host}:${toPort}` + req.url);
  15. const fetchResponse = await promise;
  16. fetchResponse.headers.forEach((value, key) => {
  17. res.setHeader(key, value);
  18. });
  19. const clone = fetchResponse.clone();
  20. let text = await fetchResponse.text();
  21. if(text.includes(`${host}:${toPort}`)) {
  22. text = text.replace(`${host}:${toPort}`, `${host}:${fromPort}`);
  23. res.send(text);
  24. } else {
  25. const arrayBuffer = await clone.arrayBuffer();
  26. const array = new Uint8Array(arrayBuffer);
  27. res.write(array);
  28. res.end();
  29. }
  30. });
  31. const server = http.createServer(app).listen(fromPort);
  32. server.on('upgrade', (req, socket, head) => {
  33. proxy.ws(req, socket, head);
  34. });
  35. const proxy = new httpProxy.createProxyServer({
  36. target: {
  37. host: host,
  38. port: toPort
  39. }
  40. });