当要求提供 1XX HTTP 状态时 Javalin 挂起

Dan*_*Dan 1 java http-status-codes javalin

我有一个Javalin服务器,端点调用的相关代码如下所示:

...
if(!someFuture.isDone()){
    ctx.status(102);
    return;
}
Run Code Online (Sandbox Code Playgroud)

当 HTTP 状态设置为1XX范围内的任何内容时,Javalin 挂起并且不返回任何内容*。2XX3XX并且4XX没有任何问题地退回。我在 Javalin 的文档中找不到任何与此相关的内容,但是1XXJavalin 不允许使用状态代码吗?如果不是,为什么会102导致这个问题?

*最终Postman注册了一个socket挂起

小智 5

1XX范围的含义是:

\n
\n

服务器已收到请求并正在继续处理

\n
\n

因此,当您响应它时,客户端将等待数据。

\n

文档Javalin基于Jetty):

\n
\n

102 处理 RFC 2518 定义了可以发送的 102 处理状态代码:

\n

当服务器合理预期该请求将\n需要很长时间才能完成时。作为指导,如果一个方法\n处理时间超过 20 秒(合理但任意的值)\n,服务器应该返回 102 处理响应。\xe2\x80\x94 RFC 2518 部分\n10.1 但是,RFC 2518 的后续更新 RFC 4918 删除了“缺乏实现”的 102 处理状态代码。

\n

Jetty 支持 102 处理状态代码。如果收到带有 Expect: 102-processing 标头的请求,则过滤器/servlet 可以通过调用 response.sendError(102) 发送 102 处理响应(不终止进一步处理)。

\n
\n