Отправленная через POST FormData
Здравствуйте.
Изначально столкнулся с проблемой когда данные в FormData нужно отправить на сервер с клиента через Fetch, а уже с сервера отправить дальше, на другой сервер (тоже в качестве FormData). Оказалось что если попробовать отправить их с сервера обратно(через response), ответ будет пуст. Далее нашёл информацию о том что на стороне сервера эти данные не видно и нужно, при помощи multer или multipart, их расшифровать. Подскажите, я правильно понимаю? Чтоб дальше использовать присланные данные в FormData, обрабатывать их или отправлять на другой сервер, их нужно расшифровать? А если нужно просто отправить данные на другой сервер как FormData, то их нужно расшифровать и запаковать снова? |
It depends...
В самом простом случае для которого ты всегда легко найдёшь инструменты и мануалы - да, придётся распаковать и запаковать снова. Если очень хочется - никто тебе не помешает отредактировать сырой HTTP запрос и переотправить его, не трогая нагрузку, однако это уже низкоуровневые манипуляции которые тебе придётся писать самому, разбираясь в деталях. Возможно тебе вообще ничего не нужно менять в запросе? Тогда тебе проще будет воспользоваться просто проксированием запроса, вообще не трогая руками содержимое. Готовых и доступных решений для проксирования тоже множество. |
Цитата:
Клиент: const data = {}; const formData = new FormData(); Array.from(createPostForm.elements) .forEach(({ name, type, value, files, ...element }) => { if (!['submit', 'file'].includes(type)) { data[name] = value; } else if (type === 'file') { Array.from(files).forEach((file) => { formData.append(`files.${name}`, file, file.name); }); } }); formData.append('data', JSON.stringify(data)); // Адрес который принимает запрос после прокси [url]http://test.ru:1337/api/post[/url] fetch('http://test.ru/example/api/post', { method: 'POST', body: formData }) .then(response => response.json() ) .then(data => { console.log(data); }) .catch(error => { console.log(error); }); Сервер: router.use('/example', proxy('http://test.ru:1337') |
express-http-proxy не умеет нормально в multipart, лол.
Это гуглится по второй ссылке при запросе "express-http-proxy formdata". А по первой ссылке решение: https://stackoverflow.com/a/76101464 |
Часовой пояс GMT +3, время: 12:02. |