Методы GET и CONNECT в прокси

Я делаю HTTP-прокси в C ++; когда клиент отправляет GET или же CONNECT При запросе к прокси прокси анализирует HTTP-заголовок пакета, разрешает имя хоста в нем, открывает еще один сокет для пункта назначения сервера и отправляет запрос клиента. Затем прокси отправит ответ сервера клиенту.

Вот GET а также CONNECT запросы от клиента, отправленные прокси на сервер:

GET http://www.gstatic.com/generate_204 HTTP/1.1

CONNECT cr-input.getspeakit.com:443 HTTP/1.1

Но когда я разбираю GET В ответ с сервера я нахожу код состояния 400, т.е. Bad Request: вроде бы (из Википедии):

неправильно сформированный синтаксис запроса, неверное формирование сообщения запроса или вводящая в заблуждение маршрутизация запроса.

Я отправляю неправильные аргументы на сервер в GET запрос?

0

Решение

  1. ПОЛУЧИТЬ. Синтаксис не неправильный, но если запрос не был сфальсифицирован вами и он действительно переходит на www.gstatic.com, вы можете проверить, генерирует ли 40-кратный код состояния любой тип запросов. Это домен, используемый для Google для разгрузки статического контента. Является ли это все еще так и почему он возвращает 40x для запросов. Перейти в Google.

  2. CONNECT. Если вы пересылаете CONNECT на сервер, это неправильно. CONNECT предназначен для открытия сквозного двоичного соединения в обход вашего прокси. Последовательность будет:

    • Получить запрос на подключение от клиента
    • Откройте TCP-соединение с IP: Port (очевидно, после разрешения DNS)
    • Верните «200 OK» клиенту, если соединение было успешно открыто или код ошибки по вашему выбору (плюс, при желании, некоторые пояснения в текстовой / HTML-форме для конечного пользователя)
    • Если данные получены с любого конца -> перешлите их на другой конец, пока одно из соединений не будет закрыто, когда вы закроете другой конец.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]