Главная страница
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.145 c
3-1282030520
scott
2010-08-17 11:35
2013.03.22
аналог for xml auto для оракла


15-1347612790
LDV
2012-09-14 12:53
2013.03.22
Управление флагами в InnoSetup


3-1286948670
Ciberrus
2010-10-13 09:44
2013.03.22
ошибка property already defined by lookup field


2-1342616239
Люда
2012-07-18 16:57
2013.03.22
Tab в onKeyDown, onKeyPress


2-1327748818
upc
2012-01-28 15:06
2013.03.22
Разрешить ввод в Edit только числовые значения с плавающей точкой