2016-09-27 1 views
-1

Я делаю прокси-приложение для браузера. Он должен использовать только стандартные библиотеки. До сих пор мне удалось создать сервер. При попытке получить доступ к веб-страницы от клиента, я получаю следующую информацию:Java автономная прокси-программа

CONNECT gmail.com:443 HTTP/1.1 User-Agent: Mozilla/5.0 Firefox/49,0 Proxy-Connection: Keep-Alive соединения: держать-жив хост: gmail.com:443

Мой вопрос: что использовать для того, чтобы обрабатывать запросы? Как обрабатывать загрузку файла?

ответ

1

После того, как вы получите, что CONNECT команды, делать то, что просит: создать вверх по течению соединения, и возврат соответствующий ответ успеха/отказа. Если восходящее соединение было успешным, все, что вам нужно сделать, это копирование байтов в обоих направлениях одновременно. Конечные точки будут заботиться обо всех проблемах SSL, загрузках, загрузках и т. Д. Вам больше нечего играть.

-1

Общее поведение прокси выглядит следующим образом:

  1. Получить запрос от браузера
  2. Сделать запрос фактического сервера, разрешая все перенаправляет при необходимости
  3. Получить ответ от сервера и passit на клиенте

Я не получаю в осложнениях изменяющимися заголовков запроса/ответа, кэширование и т.д.

Теперь из вышесказанного вы делаете SSL-соединение с gmail.com refer.

Браузер действительно отправляет правильный запрос, в этом случае вам необходимо выполнить рукопожатие и подключиться к gmail с помощью HTTPS, разгружая SSL на вашей стороне и отправляя ответ, полученный браузеру через согласованный SSL с браузером.

Предложения заключается в использовании HTTP вместо HTTPS, если это не система производства грейдера и опробовать концепцию первого

+0

Это неверно, и это не то, что он говорит в вашей [ссылке] (http://stackoverflow.com/questions/11697943/when-should-one-use-connect-and-get-http-methods-at -http прокси-сервер). – EJP

+0

Ссылка является ссылкой и некоторыми сведениями о запросе CONNECT – Ironluca

+0

Ваша ссылка правильно говорит «с SSL (HTTPS), только два удаленных конечных точки понимают запросы, и прокси не может их расшифровать. Следовательно, все, что он делает, открыто, что туннель использует CONNECT и позволяет двум конечным точкам (веб-серверу и клиенту) напрямую разговаривать друг с другом », что противоречит вашему ответу: в частности, часть о« выгрузке SSL на вашей стороне ». – EJP

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