Node.js Превосходит Двоичные Данные При Работе Через Http Из-За Кодировки По Умолчанию — Лечите И Ненавидьте

Короче, пишу свой прокси-сервер на node.js (он еще полезен, но просто прокси имеет свое применение, мне эту тему давно сожгли, интересно, жив ли он еще) Прокси на основе методов типа .

pipe() мне не подходит — мне нужно пропустить через себя полные данные, иначе они пройдут мимо.

Мне нужно загрузить данные полностью, обработать их и затем отправить.

Написал прокси на сокетах на примерах - бьет картинки (загружаются данные другой длины, чем content-length, причем для маленьких картинок разница меньше, для больших больше) Переписал на http модуль - все равно вылетает, видимость проблемы та же.

Давно нигде о такой проблеме ничего не говорится.

Причина в том, что все операции ввода-вывода как с сокетами, так и с http имеют указание кодировки, и даже если вы его не укажете (необязательный параметр), внутри есть какая-то кодировка по умолчанию, и она что-то делает по умолчанию! То есть все изображения каким-то образом обрабатываются этой кодировкой и портятся.

И это отдельный вопрос: что это за фигня - одна кодировка? Тогда их должно быть два — кодировка до и после.



Как решить проблему с кодировкой node.js

Кодировку ставим «двоичная» — если скачиваем, то перед получением данных нужно написать что-то вроде
  
   

var req = http.request(options, function (res) { res.setEncoding('binary');

А когда отправляешь картинку, нужно добавить второй параметр, например

response.write(data,'binary');

И перестанет с данными возиться, а ещё сломала html кодировку, просто я сразу не заметил, сначала увидел на картинках.

И нигде в советах, примерах всяких stackoverflow.com и документации не упоминается, что эта работа с кодировкой включена по умолчанию и она портит все данные.

Как это вообще возможно? Англоговорящим, ладно, плевать на кодировки, а на картинки? они приводят такие спокойные примеры кода, который берет битые данные и отправляет их.

Я не профессиональный программист, я изобретаю велосипеды.

Наверняка сейчас вы найдете массу прокси с открытым исходным кодом (удовлетворяющих условиям выше), вам просто нужно было смотреть … Теги: #node.js #defaults #ненависть #они вроде как помогли мне #node.js

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.