|
||||||||
|
Перенаправление на другой Web-узел.
Часто бывает, что некоторому URL нужно поменять назначение запроса пользователя. Web-приложение может обработать некоторые данные на основе запроса, а затем отправить назад страницу, которая будет зависеть от природы запроса или некоторого элемента базы данных. При публикации в Web объявлений это делается особенно часто. Так, рекламная графика указывает на другой URL, и после щелчка на таких изображениях пользователь перебрасывается на начальную страницу рекламодателя. Часто HTML-код для графики рекламного характера содержит параметры рекламодателя, предназначенные для сервера. Сервер может зафиксировать эту информацию, а затем отправить клиента на соответствующую страницу. Этот метод, называемый перенаправлением, весьма эффективен для решения многих задач. Уже известный вам Delphi-класс TWebResponse включает метод SendRedirect, который в качестве параметра принимает одну строку. Эта строка содержит полный адрес узла, на который должен быть перенаправлен клиент. Метод SendRedirect объявляется следующим образом: procedure SendRedirect(const URL: string); virtual; abstract; Этот метод объявляется как абстрактный в модуле HTTPAPP.PAS и определяется в модуле ISAPIAPP.PAS. Для Web-сервера не составит труда обработать HTTP-запрос с параметрами, а затем передать его на узел, имя которого указано в одном из параметров. Например, если на одной из страниц находится GIF-файл, а все графическое изображение представляет собой гиперссылку, то назначаемый ей URL будет выглядеть примерно так: <А HREF="http://www.somecoolplace.com/transfer?www.borland.com.coolgif.gif&borland"><IMG SRC="coolgif.gif"></A> При этом обработчик события OnAction в приложении Web-сервера с именем /transfer может выглядеть следующим образом: procedure
TWebModule1.WebModule1WebActionItem3Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled:
Boolean); Используя этот метод, можно создать общее приложение передачи, которое обрабатывает каждое рекламное объявление на узле. Конечно, помимо рекламных, для вызова метода SendRedirect() могут быть и другие причины. Этот метод можно использовать для фиксации специфических запросов URL и любых данных, которые могут быть связаны с определенными гиперссылками. При этом достаточно собрать данные из свойства QueryFields, а затем при необходимости вызвать метод SendRedirect().
| ||||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |