【问题标题】:HTTP Status Code 103 in Log日志中的 HTTP 状态代码 103
【发布时间】:2016-02-28 09:27:30
【问题描述】:

我们有一个运行在 Apache2 服务器后面的 Tomcat 7,通过 AJP 连接。

我们在 Tomcat 收到的一些 AJAX 请求不包含任何请求参数。 这也适用于 GET 和 POST 请求。 检查 Apache access_log 请求都以 103 的 HTTP 状态代码得到答复:

IP - - [SNIP] "POST /redacted/ticket/1234567 HTTP/1.1" 103 655 "https://redactedhost.com/redacted/ticket/1234567" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"

我不知道这个状态码是从哪里来的。有人听说过吗?据我检查,它不是来自我们应用程序的自定义响应,也没有在我们的 Tomcat 或 Apache 配置中定义。

【问题讨论】:

  • HTTP 状态代码 103 用于可恢复请求提案中以恢复中止的 PUT 或 POST 请求。更多详情请查看en.wikipedia.org/wiki/List_of_HTTP_status_codes
  • @Ghayei,您在引用的 Wikipedia 链接中哪里看到了状态码 103?实际上,它是一个非官方的 HTTP 响应代码(几乎没有文档记录),但某些服务可能会使用它来通知诸如“创建 Web 服务时访问被拒绝”之类的信息。

标签: apache http tomcat


【解决方案1】:

官方 IANA 注册中心 [1] 表示未分配代码 103。

一些谷歌搜索从“Resumable HTTP Requests Proposal”[2] [3] 中找到“103 Checkpoint”(我不知道 [3] 中的那个文档是否是最新的,它只是来自搜索结果的第一页。通常此类提案应作为 IETF 草案进一步)。请注意,它不是官方的,来自 [3] 的响应代码 308 已经被 RFC 7538 [1] 分配用于不同的目的。

据我检查,这不是我们应用程序的自定义响应

如果它不是在普通视图中,它可能是您正在使用的过滤器之一。浏览你的图书馆。您可以尝试使用调试器运行。

您是仅在 Apache HTTPD 端看到响应代码,还是在 Tomcat 访问日志中也看到响应代码?

【讨论】:

  • 不幸的是,我们的 Tomcat 没有记录它发送 atm 的 HTTP 状态代码。但是,我们刚刚在没有 Apache 的普通 Tomcat 安装中收到错误(没有任何参数的请求),因此 Apache 或 AJP 可能不是这里的罪魁祸首。
  • 只需添加指向该可恢复 HTTP 请求提案的存档版本的链接:web.archive.org/web/20080827153926/http://code.google.com/p/…
  • 不幸的是,我在上面链接的该提案的存档版本似乎早于包含 103 Checkpoint。但是 AFAICS 该提案是由 Google Gears 背后的 Google 团队发起的,并且这些工程师有一个存档的邮件列表讨论关于在此处包含 103 Checkpoint:ietf.org/mail-archive/web/httpbisa/current/msg01932.html
【解决方案2】:

Status Code 103 是一种“非官方”实现,最终出现在一些(极少数)产品/软件源代码中,这是人们在 (罕见)场合。

历史表明 状态码 103 计划在请求依赖于安装/实现时做出响应,这意味着它应该在服务器安装或网络中缺少某些(必需的)或故障时出现.

消息“Access denied while creating Web Service”最初是为Status Code 103设计的,但只有少数实现使用了它。也有简单翻译为“Checkpoint”的情况。

有一段时间,这些消息几乎没有意义,状态代码 103 一直被列为“非官方”,直到它成为 已弃用甚至在成为官方之前,这发生在 2012 年左右的某个时间点。

但是,在 K. Oku 的建议下,2017 年 12 月 20 日,IETF(互联网工程任务组)从“已弃用”中检索并重置了状态代码 103到“Experimental”,将其改装为“Early Hints”,因为它已在RFC 8297 中列出。

您可以在这里阅读更多它的新用途和用途:An HTTP Status Code for Indicating Hints

在 2018 年,状态码 103 正式列在 IANA HTTP Registry 中,甚至在被 IETF 设为官方之前。基于此,Status Code 103 的新含义应该可以安全使用,并且很快它也会被 IETF 变为“官方”。长期以来,其他状态代码就是这样。

我必须表示感谢并感谢 Ujjwal Gulecha 抽出时间在旧线程上提供此信息。当行业发生变化并影响提供的答案时,它有助于在 Stack Overflow 中保持信息的最新状态。干得好,麻烦!

【讨论】:

    【解决方案3】:

    HTTP 103 已被批准为状态码,用于向客户端指示提示。

    更多详情在这里IETF

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2020-04-30
      • 1970-01-01
      • 2016-04-15
      • 2019-12-19
      相关资源
      最近更新 更多