HTTP 302重定向 - 需要消息体吗?

27

RFC 2616未指定是否需要消息主体,我理解为可选项。省略消息主体有没有实际的危险性呢?

例如,在302状态码中省略消息主体是否会触发某些浏览器中的错误(或功能)?

3个回答

28

不需要。然而,关于302的RFC9110规范也没有禁止它。

服务器的响应内容通常包含一个简短的超文本注释,其中包含指向不同URI的超链接。

请注意,它确实禁止某些状态下的消息主体,例如204304

[204|304]响应以头部节结束;它不能包含内容或预告片。

如果对于302也是如此,那么它肯定应该被明确提到。

据我所知,所有现代浏览器在收到GET或POST响应中的302时都会忽略消息正文,并直接转到“Location”头中指定的URL。


4

1
提供一个空的主体和根本不提供主体有什么区别? - Barmar
4
Content-Length 或分块传输编码。 - Julian Reschke

2

据我所知,规范描述了至少两个规则:

  1. HEAD请求要求响应包含一个位置头。HEAD响应不应在响应主体中包含任何内容。

  2. GET请求要求响应主体中至少包含一个带有描述的超链接。

你的计划只是填充位置头吗?

至于你提到的空主体响应GET请求是否存在实际危险的问题,我唯一能预见的问题是功能性的,即当用户关闭自动重定向时。机器人也可能期望超链接。正如@BalusC所提到的,您可以使用204 No Content响应作为替代方案。例如,如果用户正在以ajaxy方式更改您的应用程序中的内容,则客户端代码可以维护文档和实体状态,服务器可以响应204。但现在我正在超前地假设我对您的用例有一些了解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接