Glassfish 4 returns 400 对带有负载的 GET 的错误请求

Glassfish 4 returns 400 Bad Request for GET with payload

我正在处理的应用程序有一个 Rest Web 服务,它需要一个带有负载的 GET 请求。我知道这不是可行的方法,但为了向后兼容,我们必须至少将其保留一段时间。这在 Glassfish 3 中运行良好,但现在我们想升级到 Glassfish 4,这里是 returns 400 Bad Request。 环顾 Glassfish 4 源代码,我发现了这个标志:

// flag, which enables/disables payload support for HTTP methods, // for which HTTP spec doesn't clearly state whether they support payload. // Known "undefined" methods are: GET, HEAD, DELETE org.glassfish.grizzly.http.HttpServerFilter#allowPayloadForUndefinedHttpMethods

默认情况下这是错误的,这就是返回 400 响应的原因。这个标志似乎只在基于服务器配置的波纹管方法中填充:

org.glassfish.grizzly.http.server.HttpServer#configureListener {   
....
httpServerCodecFilter.setAllowPayloadForUndefinedHttpMethods(
                serverConfig.isAllowPayloadForUndefinedHttpMethods());
....
}

这里的 serverConfig 是一个最终属性,它有一个 public getter,但我没有得到任何结果。

毕竟我的问题是:是否有任何方法可以通过编程方式(我怀疑)或从管理 GUI 将该标志设置为 true?还有其他方法可以让它在 Glassfish 4 中工作吗?

谢谢

行为之王存在一个问题,您可以看到 here 修复已应用于 glassfish 4.1.1。开发人员在服务器配置中为元素 http 添加了新属性。

虽然这个帖子超级老了,但我还是运行喜欢上了这个坏小子。我知道该主题是针对 4.1.1 的,但这个特定的 属性 是针对嵌入式 Glassfish 5 的:

gp.setProperty("embedded-glassfish-config.server.network-config.protocols.protocol.http-listener.http.allow-payload-for-undefined-http-methods", allowPayloadOnAllMethods);