Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Проблема к кеширующим прокси на основе 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.118 c
15-1352821553
Дмитрий С
2012-11-13 19:45
2013.03.22
Как записать математически?


8-1230109371
Вера
2008-12-24 12:02
2013.03.22
графика


2-1339183336
простофан
2012-06-08 23:22
2013.03.22
rewrite


15-1346305970
ZeroDivide
2012-08-30 09:52
2013.03.22
Современный смартфон с долгой батарейкой. Есть такие?


1-1297521334
Slava.yo
2011-02-12 17:35
2013.03.22
Автопрокрутка в Webbrowser





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский