Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Проблема к кеширующим прокси на основе IndyHttpProxyServer   Найти похожие ветки 

 
Дмитрий   (2012-03-12 21:58) [0]

Добрый вечер.

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

Посмотрел что там было изменено. Нашел что было добавлено.


   procedure CommandFILE(ASender: TIdCommand);

 with CommandHandlers.Add do
 begin
   Command := "FILE";            {do not localize}
   OnCommand := CommandFILE;
   ParseParams := True;
   Disconnect := true;
 end;

procedure TIdHTTPProxyServer.CommandFILE( ASender: TIdCommand );
begin
ASender.Context.Connection.IOHandler.WriteFile(URLDecode(ASender.Params.Strings[ 0]));
end;

procedure TIdHTTPProxyServer.CommandHEAD( ASender: TIdCommand ) ;
begin
end;


Встроил все это в новый Indy. Подмена прекрасно работает. Правда перед этим надо прогнать путь где лежит файл через UrlEncode.

Файл подмениваю вот так AData := "FILE "+URLEncode(path, false)+" HTTP/1.1" в событии OnBeforeCommandHandler.

Но появилась одна проблема. Делалось собственно говоря это чтобы сто раз не подгружать тяжелые флешки и картинки. Но как оказалось на многие флешки передают параметры к примеру index.swf?set_backgroud=000000. Но когда я пробую так же подгрузить флешку с диска с параметрами говорит что файла нет, а без параметров флешка не срабатывает. Подскажите как быть?


 
sniknik ©   (2012-03-13 00:26) [1]

что-то подсказывает,  что нужно подменять данные, контент, а не заголовок - url запроса...


 
Дмитрий   (2012-03-13 01:08) [2]

Так тут и подмениваются собственно говоря данные. Картинки ведь с диска читает... Вот тока не могу дойти как к погружаемому файлу с диска добавить параметры. Если добавляю их к имени файла, то я так понимаю он пытается найти такой файл. То есть если к файлу index.swf надо добавить параметр ?set_color=0000. Я передаю ему index.swf?set_color=0000 то он пытается найти такой файл... Как ему объяснить что set_color=0000 это параметры не могу понять.


 
sniknik ©   (2012-03-13 07:50) [3]

> Так тут и подмениваются собственно говоря данные.
да нет, тут подменяется url на локальный путь, а уж данные с него он читает самостоятельно.
все остальное следствие. и то что параметры в url локально не действуют тоже, у тебя же на диске http сервера к которому ты удаленно обращаешься... да и не может быть.

а нужно как то сделать чтобы адрес/url не менялся, а менялись только данные. вот посмотри в браузере, через прокси ты видишь/ходишь по локальным ссылкам прокси, или внешним сервера?
нажав на ссылку того же index.swf (так чтобы открыть в новой вкладке/окне) ты видиш изменившийся путь, если есть прокси(нормальный)? вовсе нет, а у тебя именно так.


 
Дмитрий   (2012-03-20 09:55) [4]

Подскажите как тогда произвести замену только данных а не URL ?


 
Дмитрий   (2012-03-23 20:07) [5]

Так понимаю что надо в событии OnHTTPDocument отслеживать путь загружаемого файла в ADocument. Если он jpg,swf или одно из нужных расширений, то в VStream: TStream в том же событии производить запись данных из локальных файлов в поток VStream. Все ли правильно я понимаю? Если да то как записать данные из локального файла в поток VStream?



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.061 c
2-1337886159
novichek
2012-05-24 23:02
2013.03.22
FilterGraph Яркость


2-1342962810
Eliot
2012-07-22 17:13
2013.03.22
Excel&Delphi 7


15-1352991636
AV
2012-11-15 19:00
2013.03.22
Четверговская задача :)


2-1332225008
ixen
2012-03-20 10:30
2013.03.22
Обращение из потока


15-1346924828
>|<
2012-09-06 13:47
2013.03.22
OpenCV + Delphi