Мы используем решение Swisscom CloudFoundry с приложением Java и Node.JS. С недавнего времени каждый код состояния HTTP, начинающийся с 5xx (проверено с 500
и 503
), автоматически сопоставляется с кодом состояния 302 Found
с заголовком перенаправления на /offline_pages/
(проверено с DELETE
, POST
и GET
). Это делается между нашим приложением и внешним интерфейсом, запрашивая ресурс с кодом состояния 5xx
.
Мы активно используем коды состояния 5xx
, чтобы сообщать об ошибках сервера во внешний интерфейс через наш REST API (включая время простоя на техническое обслуживание и т. д.). Это больше не работает из-за автоматического сопоставления. Например, больше нет автоматического перенаправления на страницу обслуживания, потому что внешний интерфейс не воспринимает статус 3xx
как ошибку.
Эта проблема возникает в обоих наших приложениях (Java и Node.JS). Однако журналы отображают правильную ошибку 503
соответственно 500
. Кроме того, в базе кода нашего приложения строка URL-адреса перенаправления /offline_pages/
даже не присутствует; что приводит к выводу, что это нужно делать вне нашего приложения.
Если видимая страница браузера возвращает 500
, пользователь фактически перенаправляется на страницу /offline_pages
, которая отображает страницу ошибки Swisscom. Эта страница с ошибкой (на которую она перенаправляется) затем возвращает код состояния 200
со своей стороны, что делает невозможным автоматическое обнаружение ошибки в браузере киоска.
Есть ли возможность настроить Swisscom CloudFoundry, чтобы деактивировать это внезапное поведение?
Это запрос, сделанный внешним интерфейсом:
GET /api/account HTTP/1.1
Host: <HOST>
Connection: keep-alive
Accept: application/json, text/plain, */*
User-Agent: <USER-AGENT>
Referer: <REFERER>
Accept-Encoding: gzip, deflate, br
Accept-Language: <LANGUAGES>
И это ответ:
HTTP/1.0 302 Found
Location: /offline_pages/
Connection: Keep-Alive
Content-Length: 0
Ожидается то же, что и в логах сервера, в данном случае 503
. Вот логи для этого запроса:
2017-11-14 13:54:07 [RTR/1] OUT <HOST> - [2017-11-14T12:54:07.455+0000] "GET /api/account HTTP/1.1" 503 [...]