Короче, пишу свой прокси-сервер на 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
-
Dev Labs 2016. Java. 25 Июня
19 Oct, 24 -
У Яндекс.трафика Появился Конкурент (Киев)
19 Oct, 24 -
Eclipse Scala Ide — Это Уши Дохлого Осла...
19 Oct, 24