Glassfish 4返回400 Bad Request for GET with payload

时间:2015-05-06 18:44:06

标签: java get glassfish-4 payload

我正在处理的应用程序有一个Rest Web服务,它需要一个带有效负载的GET请求。我知道它不是要走的路,但为了向后兼容,我们必须至少保持一段时间。这在Glassfish 3中运行良好,但现在我们要升级到Glassfish 4,在这里返回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

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

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

这里的serverConfig是一个最终属性,有一个公共吸气剂但是没有让我到任何地方。

毕竟我的问题是:有没有办法以编程方式(我怀疑它)或从管理GUI设置该标志为真?有没有其他方法可以在Glassfish 4中使用它?

由于

2 个答案:

答案 0 :(得分:1)

对于行为之王存在一个问题,你可以看到{glass} 4.1.1。开发人员在服务器配置中添加了元素http的新属性。

答案 1 :(得分:0)

虽然这是线程超级老,但我只是遇到了这个坏男孩。我知道主题是4.1.1,但这个特殊属性适用于Embedded Glassfish 5:

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