Fetch 无法识别 102(或任何 1xx)状态码
Fetch does not recognize 102 (or any 1xx) status code
我发现 fetch
API 对于 102
或任何小于 [= 的代码总是抛出 TypeError
、ERR_EMPTY_REPONSE
或 NetworkError when attempting to fetch resource
15=],无论响应正文如何。
我花了很长时间才弄明白。 Fx、Chrome 和 Opera 之间的行为是一致的。我还确认 Postman 正确识别了 102
响应。
我想知道为什么会这样? 1xx
代码应该没问题,不是由 fetch
来决定它是否是一个错误。我找不到任何文件,也找不到任何处于相同情况的人。
这是设计使然吗?还是有办法解决这个问题?我需要 102
.
Fetch 规范要求浏览器遵循问题中描述的行为。具体见https://fetch.spec.whatwg.org/#ref-for-concept-response-status%E2%91%A0%E2%91%A8:
Any responses whose status is in the range 100
to 199
, inclusive, and is not 101
, are to be ignored.
Note: These kind of responses are eventually followed by a "final" response.
只是为了跟进@sideshowbarker 和 Google 员工:
1xx
代码被认为是信息性的并且 非最终的 (WebSocket 的 101
除外)
- 基本上浏览器遵循这个定义,期望更多内容遵循
1xx
代码
- 我返回
102
并像其他响应代码一样关闭了连接
- 浏览器认为这是一个意外结束的连接并抱怨
1xx
应使用其他代码正确完成响应 (> 199)
还有...
- 浏览器抛出的错误过于简单,无法深入了解实际情况
- 部分响应(
1xx
代码和正文)被忽略,因此不会被浏览器记录,并且 不会 显示在控制台中,使问题进一步复杂化
- 甚至
999
也适用于浏览器,因为它们不会像 1xx
代码那样被忽略
所以...
- 不要使用
1xx
除非你想保持一些长时间的 运行 连接或使用 WebSocket
- 表示"Request received, I'm processing it, come back later"时,不要用
102 Processing
,而是用202 Accepted
表示确认
我发现 fetch
API 对于 102
或任何小于 [= 的代码总是抛出 TypeError
、ERR_EMPTY_REPONSE
或 NetworkError when attempting to fetch resource
15=],无论响应正文如何。
我花了很长时间才弄明白。 Fx、Chrome 和 Opera 之间的行为是一致的。我还确认 Postman 正确识别了 102
响应。
我想知道为什么会这样? 1xx
代码应该没问题,不是由 fetch
来决定它是否是一个错误。我找不到任何文件,也找不到任何处于相同情况的人。
这是设计使然吗?还是有办法解决这个问题?我需要 102
.
Fetch 规范要求浏览器遵循问题中描述的行为。具体见https://fetch.spec.whatwg.org/#ref-for-concept-response-status%E2%91%A0%E2%91%A8:
Any responses whose status is in the range
100
to199
, inclusive, and is not101
, are to be ignored.Note: These kind of responses are eventually followed by a "final" response.
只是为了跟进@sideshowbarker 和 Google 员工:
1xx
代码被认为是信息性的并且 非最终的 (WebSocket 的101
除外)- 基本上浏览器遵循这个定义,期望更多内容遵循
1xx
代码 - 我返回
102
并像其他响应代码一样关闭了连接 - 浏览器认为这是一个意外结束的连接并抱怨
1xx
应使用其他代码正确完成响应 (> 199)
还有...
- 浏览器抛出的错误过于简单,无法深入了解实际情况
- 部分响应(
1xx
代码和正文)被忽略,因此不会被浏览器记录,并且 不会 显示在控制台中,使问题进一步复杂化 - 甚至
999
也适用于浏览器,因为它们不会像1xx
代码那样被忽略
所以...
- 不要使用
1xx
除非你想保持一些长时间的 运行 连接或使用 WebSocket - 表示"Request received, I'm processing it, come back later"时,不要用
102 Processing
,而是用202 Accepted
表示确认