Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Сети > авторизация IdHTTPProxyServer |
Автор: grofast 21.8.2012, 12:12 |
Добрый день.Помогите те кто знает. Мне нужен самописный прокси сервер с авторизацией. Я использую IdHTTPProxyServer. В процедуре TForm1.IdHTTPProxyServer1Connect(AContext: TIdContext); Пишу LHeaders := TIdHeaderList.Create(QuoteHTTP); AContext.Connection.IOHandler.Capture(LHeaders,''); Host:=LHeaders.Values['Host']; Avtorizacya:=LHeaders.Values['Authorization']; //Также можно прочитать все заголовки строчками //Zapros := AContext.Connection.IOHandler.ReadLn(enUTF8); //If EstAvtorizaciya Then If Avtorizacya='' Then Begin EstAvtorizaciya:=True; Otvet := 'HTTP/1.1 401 Unauthorized'#13#10 + 'Server: squid/2.5.STABLE3'#13#10 + 'Mime-Version: 1.0'#13#10 + 'Content-Type: text/html'#13#10 + 'Content-Length: 20'#13#10 + 'WWW-Authenticate: Basic realm="Test"'#13#10 + 'Connection: close'#13#10#13#10; AContext.Connection.IOHandler.WriteLn(Otvet, enUTF8); Abort; Exit; End; Так вот у клиента выскакивает окошко вводишь пароль и он передает пароль базовой аутонтефикацией. Я его проверяю и пропускаю клиента и дальше IdHTTPProxyServer должен выбать клиенту запрашиваемую страницу в виде html Но он ничего не выдает как я понял я в IdHTTPProxyServer1Connect из сокета забираю заголовки и сокет остается пустой дальше IdHTTPProxyServer пытается выполнить запрос а он пустой.И получается что выполнять не чего. Первый вопрос возможно ли как то из сокета скопировать данные не забирая их? Второй вопрос я правильно понимаю принцип авторизации или мне нужно по другому реализовывать авторизацию. Есть еще вариант бросить на форму http клиента и его заставить вернуть код запрашиваемой страницы а потом передать ее браузеру но по моему это изврат. Самый главный вопрос возможно ли как то из сокета скопировать данные не забирая их? |