MS Graph删除日历事件返回Transfer-Encoding头违反HTTP规范原因问询
Microsoft Graph 删除日历事件接口的HTTP规范违规问题
我的应用已上线运行数月,一切正常。但自2023年2月24日起,当调用DELETE /me/calendars/{id}/events/{id}接口删除日历事件时,Microsoft Graph返回的响应虽为204 No Content状态,却包含Transfer-Encoding头:
HTTP/1.1 204 No Content Cache-Control: private Transfer-Encoding: chunked Strict-Transport-Security: max-age=31536000 request-id: *redacted* client-request-id: *redacted* x-ms-ags-diagnostic: *redacted* Preference-Applied: IdType=ImmutableId Date: Sun, 23 Apr 2023 10:16:44 GMT
根据RFC 9112第6.1章节“Transfer-Encoding”的规定,这种情况属于违规:
A server MUST NOT send a Transfer-Encoding header field in any response with a status code of 1xx (Informational) or 204 (No Content).
注:事件已成功删除,但由于违反HTTP规范,java.net.http HTTP客户端会抛出IOException,提示“unexpected content length header with 204 response”(查看源码可知,该提示也适用于设置了Transfer-Encoding头的情况)。
我已修改代码捕获并忽略该特定异常,但这只是临时的权宜之计,因为抛出异常仍会拖慢应用运行速度。
截至目前,我的生产服务器已记录1644次该问题,最近一次发生在今早。因此我猜测大多数甚至所有向MS Graph发起的删除请求都会出现这个情况。
注:我已在Microsoft Q&A论坛发布该问题,但未收到回复。
问题
- 我是否有遗漏的要点?
- 是否有人能确认
Transfer-Encoding头的存在? - 这是已发布公告的有意变更吗?
内容的提问来源于stack exchange,提问作者Jens Bannmann
相关产品推荐
相关产品推荐

