У меня возникла проблема с отправкой json вперед при использовании node.js в качестве прокси для предотвращения проблем с xss.
При регистрации полученных данных я не обнаружил никаких проблем.
1 ответ
Решение пришло ко мне, когда я написал еще один сервер node.js, который отображал полученные данные, и позволил им имитировать сервер CouchDB.
Оказалось, что это был символ, отличный от ascii (шведский-Å). Полученные данные были обработаны как необработанные, неправильно рассчитанные Content-Length, или правильные, в зависимости от вашего настроения. ;)
Решением было использовать буфер для преобразования необработанных данных в utf8 перед вычислением Content-Length.
:
if (request.method == 'PUT') {
var data = '';
request.on('data', function(dataSnippet) {
data += dataSnippet;
if (data.length > 1e6) {request.connection.destroy();}
});
request.on('end', function(dataSnippet) {
data = new Buffer(data, 'UTF8'); //<--- This is the solution
options.headers = {
'Content-Encoding': 'UTF8',
'Content-Type': 'application/json',
'Content-Length': data.length //<--- Where it went wrong
}
proxy = http.request(options, function(proxy_response) {
proxy_response.setEncoding('UTF8');
proxy_response.pipe(response);
});
proxy.write(data);
proxy.end();
});
}
:
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.