powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / http код ответа в cache2010
13 сообщений из 13, страница 1 из 1
http код ответа в cache2010
    #37702063
slavb18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Установили cache2010, до этого стояла cache 5.0.21
в cache2010 не могу добиться вывода произвольного http кода в ответе csp-сервиса
все нестандартные коды cache заменяет на 500 Internal Server Error

под отладчиком посмотреть не получается, после выхода из OnPreHTTP отладчик ругается на отсутствие %SYS.cspServer.INT
Decos, который работал на cache 5 тоже что то его не берет, валится на
<UNDEFINED>startchar+6^%Decos ^Decos("%SYS.cspServer","Vars",-32)

кто нибудь видел может где в каше справочник http кодов ответов?

вот пример класса который должен выводить http код 450
если меняю например на 404 или 420 - каше проглатывает. а 450 уже меняет на 500

Class Report.Test Extends %CSP.Page
{

ClassMethod OnPreHTTP() As %Boolean
{
s %response.Status="450 test error"
q 1
}

ClassMethod OnPage() As %Status
{
w "test",!
Quit $$$OK
}

}
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37702107
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
%SYS.cspServer.int конечно же не будет, он закрыт

пытались сделать декомпиляцию, а зачем ?, и кто нибудь ее допилил до 2010 версии, думаю вряд ли.

про ошибку 500 полагаю это просто защита, чтобы браузеру не ушел код который он не будет знать как обработать
думаю не стоит использовать нестандартные коды ошибок HTTP
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37702152
slavb18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

нигде кроме cache такого ограничения на коды нет
и дело в том что уже корпоративная система рассчитана на такие коды
не хочется переписывать только из-за одной cache, хочется допилить или обойти как нибудь
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37702476
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slavb18,

в общем проблема не в Cache, он все отдает как говорят, судя по всему меняет код встроенный Apache
когда я делаю запросы через IIS то код статуса совпадает

данная проблема говорит о том что не желательно отходить от стандарта
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37702486
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorslavb18,

в общем проблема не в Cache, он все отдает как говорят, судя по всему меняет код встроенный Apache
когда я делаю запросы через IIS то код статуса совпадает

данная проблема говорит о том что не желательно отходить от стандарта

либо что скорее всего из-за различий версий встроенного apache
в 2008 был apache 2.0
в 2010 уже apache 2.2
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37702653
slavb18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

апач сторонний, и один и тот же, что для cache 5, что и для cache2010
различие только в том что cache2010 работает через модуль CSPa22.so (без cspnsd)
попробую тогда туда покопать.
PS. различие в кодах делали специально, чтобы не путать кто сказал 403 например - апач или приложение, сделали в приложении все коды +50, 403->453.
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37704758
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slavb18 ,

Попробуйте включить расширенное журналирование на уровне CSP-Шлюза и/или Apache и посмотрите, что Вам вернётся.

У меня (Cache for Windows (x86-64) 2012.2 (Build 528_1U)) в обоих журналах возвращается правильный статус.

Сделал следующее:
код на ZENClass my.test1 Extends %ZEN.Component.page
{

XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
  <html>
  test
  </html>
</page>
}

/// Zen page notification of an HTTP request. This method can be overwritten
/// by subclasses.<br/>
/// This is called <em>before</em> the standard Zen pre-HTTP processing occurs.
ClassMethod %OnPreHTTP() As %Boolean [ ServerOnly = 1 ]
{
  s %response.Status="450 test error"
  q 1
}

}
включил в Apache журналирование:
в файле %CacheHome%\httpd\conf\httpd.conf раскомментировал строку
Код: plaintext
CustomLog logs/access.log common


включил в CSP-Шлюзе уровень журналирования "EV3"

Результаты:

CSP.log
Код: xml
1.
2.
3.
4.
5.
6.
...
HTTP Headers
HTTP/1.1 450 test error
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
...


access.log
Код: vbnet
1.
2.
3.
...
127.0.0.1 - - [14/Mar/2012:11:23:26 +0200] "GET /csp/test/my.test1.cls?CSPCHD=0...GmgF5Q8xhhQ--&CSPSHARE=1 HTTP/1.1" 450 3785
...
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37706298
slavb18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

посмотрел, в логах апача и csp - код 455, но клиенту приходит 500

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
curl -v  http://vulkan:57773/csp/test/Report.Test.cls 
* About to connect() to vulkan port 57773 (#0)
*   Trying 10.15.16.37... connected
* Connected to vulkan (10.15.16.37) port 57773 (#0)
> GET /csp/test/Report.Test.cls HTTP/1.1
> User-Agent: curl/7.20.0 (i686-pc-linux-gnu) libcurl/7.20.0 OpenSSL/1.0.0c zlib/1.2.5
> Host: vulkan:57773
> Accept: */*
>
< HTTP/1.1 500 Internal Server Error
< Date: Thu, 15 Mar 2012 07:59:17 GMT
< Server: Apache
< SET-COOKIE: CSPSESSIONID-SP-57773-UP-csp-test-=0010000100001h7tWmsm96000093ODATVuD7FUU_iKUj4cDw--; path=/csp/test/;
< CACHE-CONTROL: no-cache
< EXPIRES: Thu, 29 Oct 1998 17:04:19 GMT
< PRAGMA: no-cache
< CONTENT-LENGTH: 6
< Content-Type: text/html; charset=windows-1251
<
test
* Connection #0 to host vulkan left intact
* Closing connection #0

< HTTP/1.1 500 Internal Server Error
< Date: Thu, 15 Mar 2012 07:57:38 GMT
< Server: Apache
< SET-COOKIE: CSPSESSIONID-SP-443-UP-cache2010-csp-test-=000000020000147sl38i8s00007kbMEIG$27CFmUIDcIwl0g--; path=/cache2010/csp/test/; secure;
< CACHE-CONTROL: max-age=1, must-revalidate
< EXPIRES: Thu, 29 Oct 1998 17:04:19 GMT
< PRAGMA: no-cache
< CONTENT-LENGTH: 6
< Content-Type: text/html; charset=windows-1251
<
test



при том 500 приходит только в режиме работы через CSPa22.so
в режиме cgi (nph-CSPcgi) отдается код 455

уже попробовал (безрезультатно) прописывать
Non_Parsed_Headers=Enabled и Non_Parsed_Headers=Disabled
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37707274
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slavb18 ,

Я Вам не смогу помочь.
Возможно, кто-то из коллег поможет.
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37900317
alex171069
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все это замечательно конечно, все с выше сказанным понятно.
А вот может быть кто нибудь просветит мою темноту по вопросу наличия в классе %CSP.Page средств к прекращению какого либо ответа сервера браузеру ?
Т.е. есть ли методы на стороне сервера которые бы полностью блокировали ответ сервера браузеру после того же onPage .....
Чтобы на стороне клиента браузер бы даже ухом не повел после завершения работы класса наследованного от %CSP.Page ?
Спасибо!
Ps/ вы уж простите за мою темноту но уж очень знать охото !
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37900329
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069,

всмысле, не совсем понятно, сервер что то все равно должен ответить либо разорвать соединение
ответить с кодом можно в OnPreHTTP, в %response.Status, код ответа если хотите ответить отличный от 200 ОК
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37900464
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069 ,

Посмотрите %CSP.Response.Abort() (и UseASPredirect там же).

Проще в OnPreHTTP() вернуть 0 , тем самым предотвратив вызов OnPage()
Не вижу смысла странице позволить начать делать какую-то работу, например генерировать большой долгий отчёт, чтобы потом в итоге ничего не вернуть.
...
Рейтинг: 0 / 0
http код ответа в cache2010
    #37901428
alex171069
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее для предотвращения отправки данных надо задать параметр OutputBody в обработчике OnHTTPHeader как написано в HELP-e но при этом в браузер выводится сообщение, что сервер не предоставил никаких данных, к тому же приводит и quit 0 в OnPreHTTP()

Что касается длинного и долгого отчета то конечно же вы правы в том, что это бессмысленно отказываться от ответа сервера.
Но это если это отчет, а не что либо другое не требующее ответа сервера...
Спасибо всем кто обратил внимание на мой вопрос!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / http код ответа в cache2010
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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