Прежде чем перейти к реальному вопросу, позвольте мне объяснить, как работает мой проект: для простоты мой прокси находится на моем ноутбуке, где также находится клиент (мой браузер); удаленным сервером будет, например, YouTube.
Клиент подключен к определенному порту прокси благодаря плагину SwitchOmega: клиент хочет подключиться к www.youtube.com, и прокси получает следующий запрос:
CONNECT www.youtube.com:443 HTTP/1.1
Host: www.youtube.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36
Мне сказали, что когда прокси получает запрос CONNECT
, он должен открыть TCP-соединение с IP:Port, вернуть клиенту сообщение 200 OK
и отправлять данные, пока одна сторона соединения не будет закрыта.
С другим плагином, который отслеживает HTTP-запросы, HTTP Trace, я вижу другой запрос в моем браузере:
GET https://www.youtube.com/
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
and other data...
Итак, почему мой прокси-сервер получает CONNECT www.youtube.com:443 HTTP/1.1
а HTTP Trace показывает GET https://www.youtube.com/
? Они имеют в виду одно и то же?