我发现fetch
的API始终会为TypeError
或任何小于ERR_EMPTY_REPONSE
的代码抛出NetworkError when attempting to fetch resource
,102
或200
,无论响应的正文。
这花了我很多时间去弄清楚。 Fx,Chrome和Opera之间的行为保持一致。我还确认了邮递员可以正确识别102
响应。
我想知道为什么会这样吗? 1xx
代码应该可以,并且不能由fetch
来决定是否是错误。我找不到任何文档,也似乎找不到处于相同情况的任何人。
这是设计使然吗?还是有解决这个问题的方法?我需要102
。
答案 0 :(得分:2)
Fetch规范要求浏览器遵循问题中描述的行为。具体参见https://fetch.spec.whatwg.org/#ref-for-concept-response-status%E2%91%A0%E2%91%A8:
任何状态为
100
到199
(包括),而不是101
的响应都将被忽略。注意:此类响应最终会跟随“最终”响应。
答案 1 :(得分:1)
只需跟进@sideshowbarker和 Google员工:
1xx
代码被认为是信息性的,并且非最终性的(对于WebSocket,101
除外)1xx
代码 102
并与其他响应代码一样关闭了连接1xx
响应应正确填写其他代码(> 199)然后...
1xx
代码和正文)将被忽略,因此不会被浏览器记录,并且将否显示在控制台中,这使问题变得更加复杂999
也适用于浏览器,因为它们不会像1xx
代码那样被忽略所以...
1xx
102 Processing
,而是使用202 Accepted
进行确认