#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 » Извините, если я не предоставил достаточного контекста.