Внутренние ошибки сервера отображаются на 302 Found с перенаправлением на /offline_pages/ в Swisscom CloudFoundry.

Мы используем решение 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 [...]

person ssc-hrep3    schedule 14.11.2017    source источник


Ответы (1)


Произошла реконфигурация балансировщика нагрузки Swisscom, которая вызвала это странное поведение. Это должно быть исправлено сейчас.

person Lafunamor    schedule 14.11.2017