Как мы можем обмануть протокол HTTP? - PullRequest
2 голосов
/ 19 сентября 2009

Хотя HTTP вездесущ, он поставляется с багажом заголовков, что в моем случае становится все более серьезной проблемой. Мои данные для передачи - это йота размера HTTP-заголовка.

  • Есть ли другой протокол, который я могу использование, которое все еще понимается браузеры и другие сети и не поставляется с багаж HTTP?
  • Есть ли другой способ пропустить заголовки и добавить их в место назначения, чтобы по сети передавался только небольшой объем данных?

Ответы [ 3 ]

7 голосов
/ 19 сентября 2009
  1. номер
  2. номер

Многие заголовки HTTP являются необязательными. Типичный запрос браузера намного больше минимального запроса, который может выглядеть следующим образом:

GET /doc HTTP/1.1
Host: example.com
Connection: close

(Я могу с уверенностью сказать, что запросы этой формы работают, потому что я использую их все время при тестировании ответа веб-сервера с помощью telnet example.com 80.)

Возможно, вы можете получить полезные результаты, просто опустив некоторые заголовки.

5 голосов
/ 19 сентября 2009

HTTP-запросы могут быть довольно маленькими. Как указывает хаос в своем ответе, вам не нужно отправлять много заголовков с запросом. Единственный заголовок, который необходим, - это Host. Я могу немного упростить пример хаоса, используя HTTP 1.0, в котором нет постоянных соединений.

GET / HTTP/1.0
Host: example.com
                                       (blank line is necessary)

Ответ может быть таким же простым

HTTP/1.0 200 OK
Content-Type: text/html

data content

В этом случае издержки HTTP составляют около 40 байтов в запросе и ответе. Стандартный пакет TCP имеет размер 1500 байт, поэтому в ответном пакете достаточно места для фактических данных.

Есть и другие заголовки HTTP, и они имеют значение. Вы можете включить информацию кеша и сделать условные GET. Вы можете использовать постоянный сокет HTTP / 1.1 для ускорения последующих запросов. И т. Д., И т. П. Вам не нужно использовать ничего из этого, если вы не хотите, но одна хорошая вещь в HTTP - это стандартный способ создания более сложных протоколов, когда вам это нужно.

Что касается выполнения минимального HTTP в JavaME, если вы действительно заботитесь о каждом байте, вам лучше всего написать свой собственный простой HTTP-клиент, работая с обычным сокетом TCP . Если вы разговариваете с известным сервером, вам вообще не нужно ничего реализовывать. (Если вы говорите с произвольными серверами, вам нужно уделять больше внимания обработке ошибок, перенаправлениям и т. Д.).

2 голосов
/ 19 сентября 2009

WebSockets поставляются в формате HTML5 и должны соответствовать вашим потребностям. Стандартное HTTP-соединение может быть пересмотрено, чтобы изменить протокол на веб-сокеты. Но я подозреваю, что спецификация может быть немного молодой, но она может соответствовать всем требованиям.

...