HTTP/1.1请求的HTTP/1.0响应

8

回复 HTTP/1.1 的请求使用 HTTP/1.0 是否可以?

我正在使用简单的套接字实现 HTTP 通信,客户端发出的请求既有 HTTP/1.0 又有 HTTP/1.1,但协议与 HTTP 版本无关,因此我希望始终对所有请求都使用 HTTP/1.0 进行回复。 HTTP 标准是否支持这样的通信方式?

1个回答

8
当然可以。否则,如果你只支持HTTP/1.0,你能做什么呢?
如果今天出现HTTP 1.2,你认为所有现有的HTTP 1.1服务器会如何回复HTTP 1.2查询?当然,它们只能发送HTTP 1.1回复 - 这是它们所知道的全部。
只要确保在不同之处不遵循HTTP 1.1规则即可。例如,默认情况下不启用保持连接。如果客户端看到HTTP 1.0回复,它将假定HTTP 1.0语义。

当我开始迁移到HTTP/1.0来处理所有现有客户端时,"保持连接"正是我想要避免的。好吧,我希望一切都顺利 :) - Slaus
1
因此,只需在响应HTTP/1.1请求中发送 Connection: close 标头即可。(您也可以在对HTTP/1.0请求的响应中包含它们,但没有必要。)然而,接下来您仍需要确保用 HTTP/1.0 响应答复 HTTP/1.0 查询。最简单的方法可能是完全忘记1.1。 - David Schwartz
@DavidSchwartz,Http 1.0允许在主版本更改时进行回复吗?例如,当请求为HTTP/2.0时,Http 1.0应该报错吗? - Pacerier
@Pacerier:如果主版本不同,您不应该假设您完全理解请求。因此,正确的响应是返回505。(如果您愿意,您也可以将505返回到HTTP/1.2查询。只需确保在HTTP/1.2发布时及时更改即可。这对于嵌入式设备来说是一个糟糕的选择。) - David Schwartz
@DavidSchwartz,我的意思是这种行为是否符合RFC标准? - Pacerier
是的,RFC 1616第10.5.6节中提到:“服务器表明其无法或不愿意使用与客户端相同的主版本完成请求...” - David Schwartz

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