2009-08-25 7 views
1

Я использую 3G UMTS-соединение. Я пытаюсь реализовать HTTP-туннелирование на моем шахте , который прослушивает порт 80 (это делается для того, чтобы обойти брандмауэр клиента). Проблема в том, что прокси-сервер ISP поддерживает HTTP/1.0, который не поддерживает постоянное HTTP-соединение.Возможно ли постоянный HTTP с HTTP/1.0?

В результате после одной итерации HTTP-запроса/ответа между моим клиентом/сервером прокси-сервер ISP срывает базовое TCP-соединение.

мой клиент получает следующий ответ HTTP:

HTTP/1.0 200 OK 
Content-Type: application/octet-stream 
Content-Length: yyy 
X-Cache: MISS from ipmr5 
Proxy-Connection: close 
Content data 

в то время как мой сервер фактически посылает:

HTTP/1.1 200 OK 
Connection: Keep-Alive 
Content-Type: application/octet-stream 
Content-Length: yyy 
Content data 

Есть ли обходной путь?

+0

Прошло несколько лет с GNU httptunnel. Хорошо работает, когда я подключаюсь к серверу через ethernet. Не работает вообще, когда я пытаюсь подключиться к серверу через 3G UMTS. Сервер ничего не получает – mrvincenzo

ответ

3

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

+0

Я предполагаю, что трафик HTTPS, отправленный на порт 80 (порт 443 заблокирован), будет проходить через прокси-сервер ISP в любом случае. Я не уверен, что прокси-сервер будет пропускать HTTP-трафик. – mrvincenzo

+0

Я использовал это успешно (мой прокси-оператор сети принудительно сжал все ответы, которые клиент не смог обработать). Порт 443 не был заблокирован в моем случае, хотя ... – user86614

1

HTTP 1.0 прокси (который, по-видимому, использует ваш интернет-провайдер) не должен использоваться в связи с подключением: Keep-Alive для постоянных подключений. Причины этого изложены в RFC-2068 (раздел 19.7.1). Короткий вариант, в основном, заключается в том, что ваш сервер отправляет недопустимый заголовок для того типа прокси, который вы используете.

+0

Я не выбрал использовать прокси-сервер ISP, для меня выбран ISP. – mrvincenzo

+0

Что он имеет в виду ... когда ваш клиент отправляет запрос на сервер, прокси понижает его до http1.0 (или должен быть), и в этом случае ваш сервер не должен отвечать с помощью http1.1 – meandmycode

+0

meandmycode: Предположим, что мой сервер отвечает с помощью http/1.0. Тем не менее прокси-сервер отправит «Proxy-Connection: close» и снесет мой основной сокет, потому что он не поддерживает постоянный http. – mrvincenzo

Смежные вопросы