内部服务器错误被映射到 302 Found,重定向到 Swisscom CloudFoundry 上的“/offline_pages/”
Internal Server Errors are mapped to 302 Found with a redirect to "/offline_pages/" on Swisscom CloudFoundry
我们将 Swisscom CloudFoundry 解决方案与 Java 和 Node.JS 应用程序一起使用。从最近开始,每个以 5xx 开头的 HTTP 状态代码(使用 500
和 503
测试)都会自动映射到状态代码 302 Found
,重定向 header 到 /offline_pages/
(使用 DELETE
、POST
和 GET
测试)。这是完成 in-between 我们的应用程序和 front-end,请求状态代码为 5xx
的资源。
我们正在积极使用 5xx
状态代码通过我们的 REST API 向 front-end 报告服务器错误(包括维护 down-time 等)。由于自动映射,这不再起作用。例如,不再自动重定向到维护页面,因为 front-end 不会将 3xx
状态视为错误。
我们的两个应用程序(Java 和 Node.JS)都会出现此问题。但是,日志显示正确的 503
和 500
错误。此外,在我们的应用程序代码库中,重定向 URL 字符串 /offline_pages/
甚至不存在;由此得出结论,这必须在我们的应用程序之外完成。
如果一个可见的浏览器页面 returns 500
用户实际上被重定向到显示 Swisscom 错误页面的页面 /offline_pages
。这个错误页面(它被重定向到),然后 returns 一个 200
状态代码,使得无法在 Kiosk 浏览器中自动检测错误。
是否有可能配置 Swisscom CloudFoundry 以停用这种突然发生的行为?
这是front-end提出的要求:
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 [...]
Swisscoms 负载平衡器的重新配置导致了这种奇怪的行为。现在应该修复了。
我们将 Swisscom CloudFoundry 解决方案与 Java 和 Node.JS 应用程序一起使用。从最近开始,每个以 5xx 开头的 HTTP 状态代码(使用 500
和 503
测试)都会自动映射到状态代码 302 Found
,重定向 header 到 /offline_pages/
(使用 DELETE
、POST
和 GET
测试)。这是完成 in-between 我们的应用程序和 front-end,请求状态代码为 5xx
的资源。
我们正在积极使用 5xx
状态代码通过我们的 REST API 向 front-end 报告服务器错误(包括维护 down-time 等)。由于自动映射,这不再起作用。例如,不再自动重定向到维护页面,因为 front-end 不会将 3xx
状态视为错误。
我们的两个应用程序(Java 和 Node.JS)都会出现此问题。但是,日志显示正确的 503
和 500
错误。此外,在我们的应用程序代码库中,重定向 URL 字符串 /offline_pages/
甚至不存在;由此得出结论,这必须在我们的应用程序之外完成。
如果一个可见的浏览器页面 returns 500
用户实际上被重定向到显示 Swisscom 错误页面的页面 /offline_pages
。这个错误页面(它被重定向到),然后 returns 一个 200
状态代码,使得无法在 Kiosk 浏览器中自动检测错误。
是否有可能配置 Swisscom CloudFoundry 以停用这种突然发生的行为?
这是front-end提出的要求:
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 [...]
Swisscoms 负载平衡器的重新配置导致了这种奇怪的行为。现在应该修复了。