Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Ошибка при вызове гиперметода при применении Rewriting Rules / 19 сообщений из 19, страница 1 из 1
18.02.2013, 00:28
    #38155037
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
Дорогие друзья
Столкнулся с новой для себя и пока непонятной проблемой. Имею csp страницу, которую вызываю следующим образом:
http://<адрес сервера>/csp/<имя области>/index.csp
Внутри страницы есть javascript-вставка, в одной из строк которой вызывается гиперметод:
ok=#server(..loadIzbr(k))#;
k - валидный параметр, его значение точно вычислено и известно в момент вызова.
Код гиперметода находится на той же странице внизу, заголовок имеет вид:
<script language=Cache method=loadIzbr arguments="k:%String" returntype=%String>
Всё вызывается и грузится нормально.
Для CEO-оптимизации написал RewritingRules, чтобы страница вызывалась по ссылке
http://<адрес сервера>/index
Правило в файле .htaccess как раз преобразует эту строку в
http://<адрес сервера>/csp/<имя области>/index.csp

Так вот, при вызове с новым url появилась такая проблема. Стал выскакивать алерт Object Not Found. Жму ОК, и страница нормально загружается. Опытным путем удалось установить, что не находится гиперметод, т.к. после закомментирования строки
ok=#server(..loadIzbr(k))#;
загрузка с новым url происходит нормально. А после откомментирования снова выскакивает алерт.
Причем точно могу сказать, что ошибка происходит не внутри кода гиперметода, он просто не вызывается.
Нет ли у кого идей, как теперь следует переписать вызов гиперметода? Думаю, что решение этой проблемы будет полезно не только мне.
...
Рейтинг: 0 / 0
18.02.2013, 00:58
    #38155057
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
определенно точно сломалась загрузка js-файлов которые как раз обрабатывают гиперметоды
это cspbroker.js и cspxmlhttp.js, они грузятся на страницах которые используют гиперметоды
посмотри под отладкой и увидишь что будет 40* ошибка на эти файлы, открываются они по пути /csp/
так вот нужно настройками Apache добиться того чтобы при прямом обращении по ссылке /csp/*, игнорировался RewriteRules
...
Рейтинг: 0 / 0
18.02.2013, 01:14
    #38155063
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
DAiMor,
спасибо, не ожидал, что кто-то еще бодрствует. При компиляции вызов гиперметода преобразуется вот во что:
Write "ok="_("cspHttpServerMethod")_"('"_(..Encrypt($listbuild($classname()_".loadIzbr"))_$select(%session.UseSessionCookie'=2:"&CSPCHD="_%session.CSPSessionCookie,1:""))_"',k);",!

причем, $classname в данном случае - это строка csp.index
Дальнейшие шаги уже завтра предприму, т.к. FireFox'а с отладчиком сейчас под рукой нет.
...
Рейтинг: 0 / 0
18.02.2013, 03:53
    #38155092
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
Кроме этого при компиляции гиперметода в текст страницы добавляются некоторые js библиотеки.
Вот путь до них и интересно узнать. Скорее всего, он поломался.
...
Рейтинг: 0 / 0
18.02.2013, 03:56
    #38155093
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
Кстати, а почему просто нельзя было перенести все приложение в тот каталог, который хочется?
...
Рейтинг: 0 / 0
18.02.2013, 10:07
    #38155243
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
Блок А.Н.Кстати, а почему просто нельзя было перенести все приложение в тот каталог, который хочется?
Использование ЧПУ штука оправданная, главное уметь ей пользоваться, выглядит красиво, для СЕО подходит чтобы вывести сайт в интернет.
самое главное что сейчас из-за прописывания правил RewriteRules, скорее всего некорретно стала обратываться ссылка на /csp/cspbroker.js и файл теперь ищет не в том месте, что так же скорее всего можно будет увидеть в error.log, по записям типа не не найден файл по такому-то пути и путь этот будет неожиданным.
и нужно будет поиграться с конфигом так чтобы, правильно расположить блок <Location /csp/> и RewriteRules, чтобы одно другое не перекрывало.
...
Рейтинг: 0 / 0
18.02.2013, 12:47
    #38155471
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
Коллеги, вот что удалось установить. Скажу, что все необходимые системные js находятся успешно. Более того, в отладчике вообще всё сверкает, и никаких ошибок нет, т.к. видимо, алерт как раз и выдается потому, что данная ошибка уже обрабатывается в коде, и сточки зрения броузера ошибки уже нет. С помощью манипулирования точками останова в системном файле cspxmlhttp.js установил, что алерт выскакиевает при выполнении метода cspProcessResponse на строчке
bidding(self);
которой предшествует строчка
var bidding=new Function('CSPPage',js)
причем js в этой ситуации равна

"var err = null;

if (typeof cspHyperEventError == 'function') {

err = new cspHyperEventError(404,'Object Not Found',0,'');

return cspHyperEventErrorHandler(err);

}

err = 'You are logged out or invalid hyperevent request.'

if (typeof cspRunServerMethodError == 'function')

return cspRunServerMethodError(err);

alert(err);

"

Вот этот alert (Object Not Found) и выскакивает. Но почему? Как это побороть? Такое впечатление, что на данный момент сталкиваешься с чем-то доселе неизвестным и неведомым. Может, кто-то хоть как-то с таким уже боролся?
...
Рейтинг: 0 / 0
18.02.2013, 12:59
    #38155497
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
EvLaUy,

Данный код нечто иное, как аналог eval, т.е.
var bidding = new Function('CSPPage', js); // Создать новую функцию с кодом в переменной js
bidding(self); // выполнить эту функцию

а код этот только отображение ошибки, которую видимо вернул сервер
нужно убедиться что запросы гиперевента уходят в правильном направлении.
...
Рейтинг: 0 / 0
18.02.2013, 13:10
    #38155521
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
DAiMor,
да, это понятно. Весь-то вопрос и в том - в каком месте установить точку останова в cspxmlhttp.js (а может быть, в cspbroker.js?) и значения каких переменных остлеживать. Знать бы это... Вот бы кто подсказал. Ладно, буду копать. Если раскопаю - поделюсь.
...
Рейтинг: 0 / 0
18.02.2013, 13:13
    #38155529
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
EvLaUyDAiMor,
да, это понятно. Весь-то вопрос и в том - в каком месте установить точку останова в cspxmlhttp.js (а может быть, в cspbroker.js?) и значения каких переменных остлеживать. Знать бы это... Вот бы кто подсказал. Ладно, буду копать. Если раскопаю - поделюсь.
Посмотри какие ответы на гиперевенты приходят от сервера
...
Рейтинг: 0 / 0
18.02.2013, 13:36
    #38155561
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
DAiMor,
еще бы знать, как посмотреть. Вот что увидел по запросу POST %24CSP.Broker.cls
Заголовки ответа показать исходный код
Cache-Control no-cache
Connection close
Content-Type application/x-csp-hyperevent
Date Mon, 18 Feb 2013 09:22:38 GMT
Expires Thu, 29 Oct 1998 17:04:19 GMT
Pragma no-cache
Set-Cookie CSPWSERVERID=42a593ed6f1fae2537699e15e76dae89e0bb0694; path=/;
Via 1.0 <адрес прокси>:3128 (squid/2.7.STABLE9)
X-Cache MISS from <адрес прокси>
X-Cache-Lookup MISS from <адрес прокси>:3128

Заголовки запроса показать исходный код
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Cache-Control no-cache
Connection keep-alive
Content-Length 125
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Cookie CSPWSERVERID=42a593ed6f1fae2537699e15e76dae89e0bb0694
Host <адрес сервера>
Pragma no-cache
Referer http://<адрес сервера>/index
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0

Получается вот что. Если посмотреть на строку Referer, то получается, что запрос на гиперсобытие уходит по новому URL. Но преобразуется ли он согласно реврайтингу? Возможно, что правила выполняются только для GET-запросов, а это ведь - POST (точно не могу сказать, файла .htaccess сейчас нет под рукой). Такое может быть?
...
Рейтинг: 0 / 0
18.02.2013, 14:12
    #38155640
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
Ну, с вероятностью 99% диагноз поставлен. Посылается вот такой запрос:
POST http://<адрес сервера>/%25CSP.Broker.cls
при вызове гиперметода. А для него, разумеется, никакого правила реврайтинга нет. Вот и всё.
При "нормальном" вызове этот запрос выглядит так:
POST http://<адрес сервера>/csp/<имя области>/%25CSP.Broker.cls
И это работает. Вот понять бы еще, что означает сей процентованный код перед именем класса.
...
Рейтинг: 0 / 0
18.02.2013, 14:52
    #38155718
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
EvLaUy,

Я пользуюсь GoogleChrome с его панелью разработчика, очень удобно отлаживать веб-приложение, в т.ч. и сетевые запросы
можно использовать FireBug в FireFox
и панель разработчика в IE9+ (в IE8 он ужасен)
...
Рейтинг: 0 / 0
18.02.2013, 14:53
    #38155724
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
EvLaUyНу, с вероятностью 99% диагноз поставлен. Посылается вот такой запрос:
POST http://<адрес сервера>/%25CSP.Broker.cls
при вызове гиперметода. А для него, разумеется, никакого правила реврайтинга нет. Вот и всё.
При "нормальном" вызове этот запрос выглядит так:
POST http://<адрес сервера>/csp/<имя области>/%25CSP.Broker.cls
И это работает. Вот понять бы еще, что означает сей процентованный код перед именем класса.%25, это просто для сконвертированный % для URL
Код: plaintext
1.
2.
3.
w $zcvt("%","O","URL")
%25
w $zcvt("%25","I","URL")
%
...
Рейтинг: 0 / 0
18.02.2013, 14:55
    #38155730
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
DAiMor,
ну хорошо, что Вы перечислили средства отладки в браузерах, но это Вы к чему? Вы согласны с моим последним постом или все-таки собака не здесь порылась?
...
Рейтинг: 0 / 0
18.02.2013, 14:56
    #38155734
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
DAiMor,
а, ну ладно, будем считать проблему предварительно закрытой. Сегодня добавлю правило в .htaccess и протестирую гиперметод. Если получится - закроем окончательно.
...
Рейтинг: 0 / 0
18.02.2013, 15:01
    #38155747
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
EvLaUyDAiMor,
ну хорошо, что Вы перечислили средства отладки в браузерах, но это Вы к чему? Вы согласны с моим последним постом или все-таки собака не здесь порылась?
Это я к этому автореще бы знать, как посмотреть, о том что возникла проблема с просмотром результата ответа сервера
да в целом я согласен, и примерно к этому и вел, о том что неверно сформирован запрос и получен неожиданный ответ на него
...
Рейтинг: 0 / 0
27.02.2013, 19:23
    #38168573
EvLaUy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
Проблема оказалась гораздо сложнее и заковыристей, чем можно было предполагать. Дополнительное RewriteRule в .htaccess не спасает, и вот почему. Я для чистоты эксперимента записал в .htaccess два правила с почти одинаковой левой частью, разница только в расширении файла - у одного .txt, у другого .cls. Для первого правило срабатывает как надо, для второго - нет. Проблема в том, что в httpd.conf есть ведь еще и директива ScriptAliasMatch, которая "реагирует" на расширение .cls. Так вот, эта директива срабатывает раньше RewriteRule в .htaccess, и похоже на то, что она и по жизни всегда срабатывает раньше RewriteRule, в какой порядке их не расставляй. Но поскольку дальнейшее решение задачи уже никак не связано с Cache, а переходит в область чистого конфигурирования Apache, думаю, обсуждать дальше эту тему не имеет смысла в этом форуме. Проблему я в итоге решил (ибо НАДО БЫЛО, чтобы заработало), но поскольку не уверен, что решение оптимальное, боюсь подставиться под огонь критики "крутых" знатоков.
...
Рейтинг: 0 / 0
27.02.2013, 20:54
    #38168677
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при вызове гиперметода при применении Rewriting Rules
EvLaUy,

насчет расширения cls в настройках apache, я обратил внимание, что достаточно сделать LoadModule, и на cls уже висит обработчик csp_mod и я никак не смог переопределить такое поведение
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Ошибка при вызове гиперметода при применении Rewriting Rules / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]