Удаление заголовков HTTP из XMLHttpRequest - PullRequest
2 голосов
/ 01 марта 2011

Я работаю над приложением типа длинного опроса ajax, и я хотел бы минимизировать количество используемой полосы пропускания.Одной из больших затрат сейчас являются заголовки HTTP на стороне клиента.После того, как у меня установлено соединение и сохранен идентификатор сеанса на клиенте, я больше не хочу растрачивать больше пропускной способности, передавая избыточную информацию http (такую ​​как тип браузера, принимаемые кодировки и т. Д.).В течение многих соединений это быстро добавляет много данных!

Я действительно хотел бы просто взять мой XMLHttpRequest и очистить все заголовки, чтобы на сервер передавался только абсолютный минимум.Возможно ли это сделать?

Ответы [ 3 ]

3 голосов
/ 01 марта 2011

У вас очень мало контроля над заголовками запросов, но вы все равно можете сделать несколько вещей -

  1. Уменьшить размер файла cookie. В общем, вам нужен только идентификатор сеанса, все остальное можно удалить и сохранить на стороне сервера.
  2. Сверните http реферер, сохранив короткий URL. Чем длиннее URL вашей страницы, тем больше данных нужно будет отправлять через http-реферер. Одна хитрость заключается в том, чтобы хранить данные в идентификаторе фрагмента (часть URL после #). Идентификатор фрагмента никогда не отправляется на сервер, поэтому вы сохраняете там несколько байтов.
  3. Некоторые заголовки запроса отправляются только в том случае, если вы ранее установили соответствующие заголовки ответа. Например, вы можете косвенно контролировать заголовки запросов ETag и if-Modified-Since .

Вы можете рассмотреть Веб-сокеты . Поддержка довольно хорошая (IE10 +).

1 голос
/ 01 марта 2011

Возможно, вы сможете переопределить некоторые стандартных заголовков, используя setRequestHeader() перед отправкой запроса, но возможно, что браузер может не разрешить переопределение некоторых, и кажется, что нет способа получитьсписок заголовков (кроме того, чтобы попросить сервер перевести их обратно вам), чтобы узнать, какие попытки переопределить.

0 голосов
/ 09 октября 2012

Я думаю, что возможно удалить все заголовки хотя бы в некоторых браузерах. Посмотрите на связь между приложениями gmail / calendar и бэкендом от Google в Chrome (в Firefox это не то же самое) возможно, у Google есть некоторые скрытые API для объекта XMLHttpRequest, вы увидите что-то похожее на приведенный ниже вывод (обратите внимание, что раздел заголовков запросов отсутствует):

Request URL:https://mail.google.com/mail/u/0/channel/bind?XXXXXXXXXXXXXX
Request Method:POST
Status Code:200 OK

Query String Parameters
OSID:XXXXXXXXXXXXX
OAID:XXXXXXXXX
VER:8
at:XXXXXXXXXXXXXX
it:30
SID:XXXXXXXXXXXX
RID:XXXXXXXXX
AID:XXXXXXXXXX
zx:XXXXXXXXXXXX
t:1

Request Payload
count=1&ofs=211&req0_type=cf&req0_focused=1&req0__sc=c

Response Headers
cache-control:no-cache, no-store, max-age=0, must-revalidate
content-encoding:gzip
content-type:text/plain; charset=utf-8
date:Tue, 09 Oct 2012 08:52:46 GMT
expires:Fri, 01 Jan 1990 00:00:00 GMT
pragma:no-cache
server:GSE
status:200 OK
version:HTTP/1.1
x-content-type-options:nosniff
x-xss-protection:1; mode=block
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...