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);
我正在处理的应用程序有一个 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);