Spaces:
Sleeping
Sleeping
| 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}`); | |
| }); |