Wildfly 不断将 localhost:8080/app 重定向到 localhost:8080/app/ 以 403 错误结尾

Wildfly keeps redirecting localhost:8080/app to localhost:8080/app/ ending in 403 error

我遇到了一个非常奇怪的情况,我被重定向到我的应用程序 URL 以 / 结尾。这会导致 403 错误 Forbidden。

我已经禁用了我使用的 apache 反向代理。我已经禁用了所有配置的 spring 安全性东西,所以我会说这一切都被丢弃了。 我调试 io.undertow.servlet.handlers handleRequest,它是我在 Wildfly 中的 servlet 的入口点,我正在进入方法:

public void handleRequest(final HttpServerExchange exchange) throws Exception {

一个

HttpServerExchange{ GET /app/

所以这意味着重定向到 /app/ 发生在调用任何 servlet 之前。

在 firefox 开发人员控制台中,我看到发出了 2 个请求,一个用于 'app',紧接着一个到 '/app/',这是进入调试的那个。 在第一个请求(对于 'app')的响应 header 中,我得到:

Connection keep-alive Content-Length 0 Date Thu, 15 Nov 2018 11:23:06 GMT Location http://localhost:8080/app/ Server
WildFly/10 X-Powered-By Undertow/1

我知道 Wildfly/undertow 中的某些内容正在将我的初始请求重定向到 /app/,但它会是什么?

有趣的是,在 Wildfly 处理第二个请求之前,我看不到第一个请求的响应 header。

非常感谢任何帮助。

所以它似乎是 undertow 的一个特性...有人要求添加一个额外的 / 如果请求内容根目录时没有 / 并且它包含在版本 1.0.0.Beta5 中。

https://issues.jboss.org/browse/UNDERTOW-89

编辑:

第一个谜题解开了,增加了额外的'/'。 但为什么是 403 'Forbidden'?好吧,似乎有人忘记添加定义为欢迎页面的index.html。添加 index.html 后一切正常...

希望这对遇到同样问题的其他人有所帮助。