перенаправление на Url (web-апликация)

Тема в разделе "Lotus - Программирование", создана пользователем scripter, 31 май 2009.

Статус темы:
Закрыта.
  1. scripter

    scripter Гость

    Всем привет

    вопрос, возможно, глупый, но пока ответа не нашел :)

    Ситуация. Есть веб-приложение, которое обслуживает некий веб-сервер. Страницы рендерятся не формами, а скриптом, т.е. в поле HTML выводится raw-html.

    Задача. Юзер кликает на ссылку, скрипт производит внутренние вычисления и отправляет юзера на какой-то URL.

    Проблема. Единственный какой я нашел пока способ перенаправления - это вывод в браузер строки рефреша/редиректа:

    Код (Text):
    <meta http-equiv="refresh" content="0; url=my_final_url">
    Все бы хорошо если б при этом не терялся REFERER. Т.е. по всем таким редиректам реферер пустой. Да и поисковики при индексации очень не любят страницы с рефрешем...

    Вопрос. Есть ли какой способ передачи веб-приложением (LotusScript) редиректа на уровне протокола (выдать ему 302 и url), а не на уровне html (refresh)?

    Буду рад за возможные ответы и наводки/идеи. Всем спасибо заранее
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
  3. oshmianski

    oshmianski Гость

    scripter
    не совсем понял задачу и объяснения.
    но, если в агенте выдать print "[" & url & "]", то будет осуществлен переход на нужный url.
     
  4. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    агент имеется ввиду? тогда внутри что-нить так
    Print({<script language=Javascript>} & Chr(10))
    Print({location.href=location.pathname.split('.nsf')[0] + '.nsf/'+"Confirmation?OpenForm&RefNum=} & Cstr(orderID) & {";} & Chr(10))
    Print({</script>} & Chr(10))

    вариантов перенаправления вообще масса.
    - можно в $return прямо ручками писать html страничку с body и прочим. по субмиту агент возвращается на форму (если не задано иное в агенте), а с ретурна куда надо.
    Обращали же внимание - если ретурн пустое пишет тупо "Форма обработана"
    Так вот кишки $return например:
    ...
    CR:=@Char(13)+@Char(10);
    "Expires: Tue, 01 Jan 1980 06:00:00 GMT"+CR+"Pragma: no-cache"+CR+"Content-Type: text/html"+CR+
    "<html><head>"+CR+
    "<script src=\"/"+wdbn+"/JsDbCommonVariables?ReadForm\"></script>"+CR+"<script src=\""+commonlibpath+"\"></script>"+CR+
    "<body bgcolor=ffffff topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 class=\"documentbackground\">"+CR+
    "<script>"+CR+
    "if (onimod_ui=='noframe') {window.setTimeout('window.location=\"/"+wdbn+"/"+@If(@Contains(HTTP_Referer;"ByTopic");"ByTopicWebNoFrame?ReadForm&Count=18";"ByDateFlatWebNoFrame?ReadForm&Count=18")+"\"',3000)}"+CR+
    "else {window.setTimeout('window.location=\"/"+wdbn+"/"+@If(ui="webboardactive";"WebBoardMainActive";"WebBoardMain")+"Categorized?OpenView&RestrictToCategory="+filter+"\"',1000)}"+CR+
    "</script>"+CR+
    "</body></html>"

    - делается страничка-форма вроде Regirectpage. После всех агентов редирект на эту страницу, но с параметрами в урле типа.
    Print({location.href=location.pathname.split('.nsf')[0] + '.nsf/'+"ReturnMessage?ReadForm&msg=} &_
    ctx.GetItemValue("RegistrationStatus")(0) & Cstr("&errorcode=") & ErrorCode & {";} & Chr(10))
    На ней формулка вычисляемая которая по параметрам урла редиректит куда надо
    err:=@UrlQueryString("errorcode");
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    NetWood, какой смысл во всей этой писанине (в смысле кодировании :)) с редиректами? если есть простой способ редиректа
     
  6. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    Да не спорю. Можно и так, а если у вас куки и куча переменных JS подвязаны. Скажем через них подключается смена языка и скины на клиенте?
    Вот тогда такая галиматья - писанина и будет.
     
  7. Duedev

    Duedev Гость

    Все правильно, для ссылочки делаешь обращение к агенту, допустим из текущей базы, ввиде конструкции src="/<Computed Value>/имя агента?OpenAgent ..... для компьтид валью указываешь формулу: @ReplicaID

    Ну а в агенте лотус скрипт, который делает все необходимы вычисления и нужный print "[" & url & "]"
     
  8. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    хм... я подобными вещами глубоко не увлекался, но если агент срабатывает с перегрузкой документа, то как помогает форма для редиректа сохранить их значения?..
     
  9. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    dombulletin с opentf посмотрите (если есть полгода свободного времени :) ) отпадут все вопросы.
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
  11. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    ага. она. с русскими категориями в оригинале она не фурычит. Бурак круто написал. Мега мозг! да забросил.
    на ней кстати конфа тамошняя крутится.
    по поводу русского стучитесь в личку. сюда не выложить.
    и еще по ходу дела поправил я кой чего, уже не вспомню :)
     
  12. scripter

    scripter Гость

    Спасибо большое. Именно то, что нужно
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей