Обслуживание ответов HTTP / 1.0 с Node.JS (неизвестная длина контента, кодировка передачи по частям)

The Problem

Я обслуживаю ресурс неизвестной длины через Node.JS. Из-за этогоContent-Length заголовок не может быть установлен. Для HTTP 1.1 требуется, чтобы кодирование по частям использовалось для ресурсов такого рода. Node.JS знает об этом и отправляет мои данные с частичной кодировкой передачи самостоятельно со следующими заголовками:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Connection: close
...

Это хорошо для хороших клиентов.However, I have some not-so-well behaved clients (namely Android 2.2 and earlier) that I must support.  Эти клиенты не поддерживают правильное кодирование передачи по частям.

Fix Attempt #1

Моя первоначальная мысль была установлена кодировкаnone вот так:

response.writeHead(200, {'Transfer-Encoding': 'none'});

Это отключает автоматическое частичное кодирование Node.JS и поддерживает совместимость сmost клиентов. Однако теперь я сломал клиенты Android 2.3+, поскольку они просто кашляют и задыхаются, когда видят такой поддельный заголовок кодировки передачи.

Fix Attempt #2 (where I need help)

Когда я делаю запросы сHTTP/1.0сервер правильно возвращает ответ без чанкованной кодировки:

HTTP/1.1 200 OK
Connection: close
...

Это решает мою проблему и позволяет мне обслуживать поток, который работает для всех моих проблемных клиентов. Мне не нужно отправлять фиктивный заголовок дляTransfer-Encodingи мне все еще не нужно указывать, как долго контент.

How can I force Node.JS's HTTP server to always serve in HTTP/1.0 mode?

Ответы на вопрос(2)

Ваш ответ на вопрос