我们将 Swisscom CloudFoundry 解决方案与 Java 和 Node.JS 应用程序结合使用。从最近开始,每个以 5xx 开头的 HTTP 状态代码(使用 500
和 503
测试)都会自动映射到状态代码 302 Found
将 header 重定向到 /offline_pages/
(使用 DELETE
、POST
和 GET
测试)。这是在我们的应用程序和前端之间完成的,请求状态代码为 5xx
的资源。
我们正在积极使用 5xx
状态代码通过我们的 REST API 向前端报告服务器错误(包括维护停机时间等)。由于自动映射,这不再起作用。例如,不再自动重定向到维护页面,因为前端不会将 3xx
状态视为错误。
这个问题出现在我们的两个应用程序(Java 和 Node.JS)中。但是,日志显示正确的 503
和 500
错误。此外,在我们应用程序的代码库中,重定向 URL 字符串 /offline_pages/
甚至不存在;由此得出结论,这必须在我们的应用程序之外完成。
如果可见的浏览器页面返回 500
,用户实际上会被重定向到显示 Swisscom 错误页面的页面 /offline_pages
。这个错误页面(它被重定向到)然后返回一个 200
状态代码,使得无法在 Kiosk 浏览器中自动检测错误。
是否有可能配置 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 [...]
最佳答案
Swisscoms 负载均衡器的重新配置导致了这种奇怪的行为。现在应该修复了。
关于cloud-foundry - 内部服务器错误被映射到 302 Found,重定向到 Swisscom CloudFoundry 上的 "/offline_pages/",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47286901/