为什么 RESTEasy 会忽略 POST 方法的 HTTP 302 状态代码?

Mar*_*eim 6 post jax-rs resteasy http-status-code-302

我对 JAX-RS 和 RESTEasy 很陌生,有一件事我真的不明白。首先我来描述一下我们做了什么:

  • 我们使用 JBoss AS 7.2(是的,就是那个旧版本)和 RESTEasy 2.3.5 进行机器对机器通信。
  • 我们编写了一项接受 POST 消息但不返回正文的服务。使用通过 void 方法映射到 Java 接口的 JAX-RS 注释。
  • 该服务应仅允许安全 (HTTPS) 通信,不允许 HTTP。为了防止意外使用 HTTP,我们将Transport-guarantee设置为CONFIDENTIAL。因此,每个 HTTP 请求都会导致带有状态代码 302 和 HTTPS 位置的响应。
  • 现在有人不小心配置了 HTTP URL 而不是 HTTPS。服务器回复了 302 状态代码和正确的位置。不幸的是,客户端既没有遵循重定向也没有引发异常。因此,它没有表明呼叫未接通

关于HTTP 状态代码的RFC,我理解 POST 方法不应该有自动重定向。我本以为会引发异常。相反,这个问题会被忽略,让客户端应用程序根本没有机会检测到它刚刚发出的调用没有到达它应该到达的地方。为什么会出现这种情况以及我该如何正确执行此操作

我不相信像 RESTEasy 这样的库不允许正确处理这种情况,所以我确信我使用它是错误的。不幸的是,即使经过几个小时的谷歌搜索,我仍然没有找到我的问题的答案。我希望这里有人能启发我。

为了重现该问题并允许与其他 JAX-RS 实现进行比较,我将一个小型演示应用程序上传到了Github。它只需要 Maven 和 JDK 8 即可运行。

先感谢您,

马丁