Node.js обратный прокси изменяет имя хоста URL вместо перенаправления на реальный веб-сайт

#javascript #node.js

#javascript #node.js

Вопрос:

Я пытаюсь создать обратный прокси в Node.js который любой может использовать для любого использования. Проблема в том, что если кто-то вставит «https://google.com «он должен изменить URL на «https://www.google.com «. Вместо этого его перенаправление на «https://www.google.com «. Как мне это исправить?

 var express = require('express')
var app = express()
var https = require('https');
var http = require('http');
const { response } = require('express');


app.use('/', function(clientRequest, clientResponse) {
    var url;
    url = 'https://google.com'
    var parsedHost = url.split('/').splice(2).splice(0, 1).join('/')
    var parsedPort;
    var parsedSSL;
    if (url.startsWith('https://')) {
        parsedPort = 443
        parsedSSL = https
    } else if (url.startsWith('http://')) {
        parsedPort = 80
        parsedSSL = http
    }
    var options = { 
      hostname: parsedHost,
      port: parsedPort,
      path: clientRequest.url,
      method: clientRequest.method,
      headers: {
        'User-Agent': clientRequest.headers['user-agent']
      }
    };  
  
    var serverRequest = parsedSSL.request(options, function(serverResponse) { 
      var body = '';   
      if (String(serverResponse.headers['content-type']).indexOf('text/html') !== -1) {
        serverResponse.on('data', function(chunk) {
          body  = chunk;
        }); 
  
        serverResponse.on('end', function() {
          // Make changes to HTML files when they're done being read.
          body = body.replace(`example`, `Cat!` );
  
          clientResponse.writeHead(serverResponse.statusCode, serverResponse.headers);
          clientResponse.end(body);
        }); 
      }   
      else {
        serverResponse.pipe(clientResponse, {
          end: true
        }); 
        clientResponse.contentType(serverResponse.headers['content-type'])
        if (serverResponse.headers['Location']) {
          url = serverResponse.headers['Location']
        }
      }   
    }); 
  
    serverRequest.end();
  });    


  app.listen(8000)
  console.log('Running on 0.0.0.0:8000')
  

Я бы также предпочел не использовать какие-либо модули, такие как «запрос»

Комментарии:

1. » это должно быть https://www.google.com но вместо этого есть https://www.google.com » — я не вижу разницы. В чем проблема?

2. Если кто-то вставит » google.com » он должен изменить URL http.request вместо перенаправления на » google.com » Извините, если я не предоставил достаточного контекста.