|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
Дорогие друзья Столкнулся с новой для себя и пока непонятной проблемой. Имею 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 происходит нормально. А после откомментирования снова выскакивает алерт. Причем точно могу сказать, что ошибка происходит не внутри кода гиперметода, он просто не вызывается. Нет ли у кого идей, как теперь следует переписать вызов гиперметода? Думаю, что решение этой проблемы будет полезно не только мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 00:28 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
определенно точно сломалась загрузка js-файлов которые как раз обрабатывают гиперметоды это cspbroker.js и cspxmlhttp.js, они грузятся на страницах которые используют гиперметоды посмотри под отладкой и увидишь что будет 40* ошибка на эти файлы, открываются они по пути /csp/ так вот нужно настройками Apache добиться того чтобы при прямом обращении по ссылке /csp/*, игнорировался RewriteRules ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 00:58 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
DAiMor, спасибо, не ожидал, что кто-то еще бодрствует. При компиляции вызов гиперметода преобразуется вот во что: Write "ok="_("cspHttpServerMethod")_"('"_(..Encrypt($listbuild($classname()_".loadIzbr"))_$select(%session.UseSessionCookie'=2:"&CSPCHD="_%session.CSPSessionCookie,1:""))_"',k);",! причем, $classname в данном случае - это строка csp.index Дальнейшие шаги уже завтра предприму, т.к. FireFox'а с отладчиком сейчас под рукой нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 01:14 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
Кроме этого при компиляции гиперметода в текст страницы добавляются некоторые js библиотеки. Вот путь до них и интересно узнать. Скорее всего, он поломался. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 03:53 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
Кстати, а почему просто нельзя было перенести все приложение в тот каталог, который хочется? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 03:56 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
Блок А.Н.Кстати, а почему просто нельзя было перенести все приложение в тот каталог, который хочется? Использование ЧПУ штука оправданная, главное уметь ей пользоваться, выглядит красиво, для СЕО подходит чтобы вывести сайт в интернет. самое главное что сейчас из-за прописывания правил RewriteRules, скорее всего некорретно стала обратываться ссылка на /csp/cspbroker.js и файл теперь ищет не в том месте, что так же скорее всего можно будет увидеть в error.log, по записям типа не не найден файл по такому-то пути и путь этот будет неожиданным. и нужно будет поиграться с конфигом так чтобы, правильно расположить блок <Location /csp/> и RewriteRules, чтобы одно другое не перекрывало. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 10:07 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
Коллеги, вот что удалось установить. Скажу, что все необходимые системные 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) и выскакивает. Но почему? Как это побороть? Такое впечатление, что на данный момент сталкиваешься с чем-то доселе неизвестным и неведомым. Может, кто-то хоть как-то с таким уже боролся? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 12:47 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
EvLaUy, Данный код нечто иное, как аналог eval, т.е. var bidding = new Function('CSPPage', js); // Создать новую функцию с кодом в переменной js bidding(self); // выполнить эту функцию а код этот только отображение ошибки, которую видимо вернул сервер нужно убедиться что запросы гиперевента уходят в правильном направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 12:59 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
DAiMor, да, это понятно. Весь-то вопрос и в том - в каком месте установить точку останова в cspxmlhttp.js (а может быть, в cspbroker.js?) и значения каких переменных остлеживать. Знать бы это... Вот бы кто подсказал. Ладно, буду копать. Если раскопаю - поделюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 13:10 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
EvLaUyDAiMor, да, это понятно. Весь-то вопрос и в том - в каком месте установить точку останова в cspxmlhttp.js (а может быть, в cspbroker.js?) и значения каких переменных остлеживать. Знать бы это... Вот бы кто подсказал. Ладно, буду копать. Если раскопаю - поделюсь. Посмотри какие ответы на гиперевенты приходят от сервера ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 13:13 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
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 сейчас нет под рукой). Такое может быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 13:36 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
Ну, с вероятностью 99% диагноз поставлен. Посылается вот такой запрос: POST http://<адрес сервера>/%25CSP.Broker.cls при вызове гиперметода. А для него, разумеется, никакого правила реврайтинга нет. Вот и всё. При "нормальном" вызове этот запрос выглядит так: POST http://<адрес сервера>/csp/<имя области>/%25CSP.Broker.cls И это работает. Вот понять бы еще, что означает сей процентованный код перед именем класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 14:12 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
EvLaUy, Я пользуюсь GoogleChrome с его панелью разработчика, очень удобно отлаживать веб-приложение, в т.ч. и сетевые запросы можно использовать FireBug в FireFox и панель разработчика в IE9+ (в IE8 он ужасен) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 14:52 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
EvLaUyНу, с вероятностью 99% диагноз поставлен. Посылается вот такой запрос: POST http://<адрес сервера>/%25CSP.Broker.cls при вызове гиперметода. А для него, разумеется, никакого правила реврайтинга нет. Вот и всё. При "нормальном" вызове этот запрос выглядит так: POST http://<адрес сервера>/csp/<имя области>/%25CSP.Broker.cls И это работает. Вот понять бы еще, что означает сей процентованный код перед именем класса.%25, это просто для сконвертированный % для URL Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 14:53 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
DAiMor, ну хорошо, что Вы перечислили средства отладки в браузерах, но это Вы к чему? Вы согласны с моим последним постом или все-таки собака не здесь порылась? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 14:55 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
DAiMor, а, ну ладно, будем считать проблему предварительно закрытой. Сегодня добавлю правило в .htaccess и протестирую гиперметод. Если получится - закроем окончательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 14:56 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
EvLaUyDAiMor, ну хорошо, что Вы перечислили средства отладки в браузерах, но это Вы к чему? Вы согласны с моим последним постом или все-таки собака не здесь порылась? Это я к этому автореще бы знать, как посмотреть, о том что возникла проблема с просмотром результата ответа сервера да в целом я согласен, и примерно к этому и вел, о том что неверно сформирован запрос и получен неожиданный ответ на него ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 15:01 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
Проблема оказалась гораздо сложнее и заковыристей, чем можно было предполагать. Дополнительное RewriteRule в .htaccess не спасает, и вот почему. Я для чистоты эксперимента записал в .htaccess два правила с почти одинаковой левой частью, разница только в расширении файла - у одного .txt, у другого .cls. Для первого правило срабатывает как надо, для второго - нет. Проблема в том, что в httpd.conf есть ведь еще и директива ScriptAliasMatch, которая "реагирует" на расширение .cls. Так вот, эта директива срабатывает раньше RewriteRule в .htaccess, и похоже на то, что она и по жизни всегда срабатывает раньше RewriteRule, в какой порядке их не расставляй. Но поскольку дальнейшее решение задачи уже никак не связано с Cache, а переходит в область чистого конфигурирования Apache, думаю, обсуждать дальше эту тему не имеет смысла в этом форуме. Проблему я в итоге решил (ибо НАДО БЫЛО, чтобы заработало), но поскольку не уверен, что решение оптимальное, боюсь подставиться под огонь критики "крутых" знатоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2013, 19:23 |
|
Ошибка при вызове гиперметода при применении Rewriting Rules
|
|||
---|---|---|---|
#18+
EvLaUy, насчет расширения cls в настройках apache, я обратил внимание, что достаточно сделать LoadModule, и на cls уже висит обработчик csp_mod и я никак не смог переопределить такое поведение ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2013, 20:54 |
|
|
start [/forum/topic.php?fid=39&msg=38155724&tid=1557218]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
380ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 28ms |
total: | 508ms |
0 / 0 |