testinghf2 / index.js
WalleGriffkinder's picture
Update index.js
32ccfb1 verified
raw
history blame
1.5 kB
import express from 'express';
import fetch from 'node-fetch';
const app = express();
// Даже не парсим тело запроса, просто стримим как есть
app.use((req, res, next) => {
req.pipe = true;
next();
});
const MY_DOMAIN = 'https://wallegriffkinder-testinghf23.hf.space/';
app.all('*', async (req, res) => {
try {
// Получаем оригинальный URL без изменений
const targetUrl = req.originalUrl.substring(1); // убираем только первый слеш
// Копируем заголовки как есть
const headers = {...req.headers};
delete headers['host'];
// Создаем новый запрос
const fetchOptions = {
method: req.method,
headers,
duplex: 'half',
};
// Для не-GET запросов стримим тело
if (req.method !== 'GET') {
fetchOptions.body = req;
}
const response = await fetch(targetUrl, fetchOptions);
// Копируем статус
res.status(response.status);
// Копируем заголовки
for (const [key, value] of response.headers) {
res.setHeader(key, value);
}
// Стримим ответ напрямую
response.body.pipe(res);
} catch (error) {
console.error('Proxy error:', error);
res.status(500).end();
}
});
const port = 7860;
app.listen(port, '0.0.0.0', () => {
console.log(`Server running on port ${port}`);
});