Главная страница
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.246 c
15-1343759274
Rouse_
2012-07-31 22:27
2013.03.22
Кто сидит на корбине, нид хелп небольшой


15-1340972066
Омлет
2012-06-29 16:14
2013.03.22
Почему в русском при отрицании [всё] = [ничего]?


15-1332875974
Сергей_С
2012-03-27 23:19
2013.03.22
Проблема в скайпе с отображением видео


9-1193072476
lubass
2007-10-22 21:01
2013.03.22
Omega GDK 92


2-1340050503
ankazh
2012-06-19 00:15
2013.03.22
Отмена добавления новой записи