Форум: "Начинающим";
Текущий архив: 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.076 c