HTTP 服务器应用程序如何优雅地拒绝 HTTP Pipeline 请求?
Posted
技术标签:
【中文标题】HTTP 服务器应用程序如何优雅地拒绝 HTTP Pipeline 请求?【英文标题】:How can HTTP server application reject an HTTP Pipeline request gracefully? 【发布时间】:2014-04-14 20:08:48 【问题描述】:是否有特定的(或商定的)HTTP 响应消息(或除断开连接之外的其他操作)来阐明服务器不接受pipelined HTTP requests?
我正在寻找能够让客户端停止流水线化其请求并分别发送每个请求的东西。
如果是这样,那是什么?谢谢!
【问题讨论】:
来自***的文章:“符合 HTTP/1.1 的服务器需要支持流水线。这并不意味着服务器需要管道响应,但如果客户端选择管道请求,它们必须不失败。” ...所以我真的不明白为什么你在这里寻找这样的回应?如果您的服务器不符合 HTTP/1.1,那么它应该在与客户端协商之前回退到 HTTP/1.0。 【参考方案1】:我认为你应该在你的服务器上执行一些命令..
See Here Look at the comment also
【讨论】:
【参考方案2】:我在这方面有点晚了:-)
作为参考,拒绝管道连接的干净方法是在第一个唯一响应上添加 Connection: close
标头。
在管道的第一个响应上收到关闭的 HTTP 客户端必须重播所有剩余的查询,并且肯定会选择停止管道。
【讨论】:
我正要回复说这对客户没有多大帮助,因为他们必须等待第一个响应才能知道他们的第二个(可能还有更多)请求将不会得到服务。但是当然,由于服务器需要按顺序回复,所以它无法回复后续请求,直到它响应第一个请求。通过中止第一个请求来期待,这更没有帮助! (我希望这可以帮助其他人避免我最初的困惑。) 抱歉,但您必须等待第一个响应并在第一个响应中检测到“连接:关闭”才能知道这将是没有管道。但是流水线客户端应该期望收到更少的响应,您可以请求 5 并且只获得前 4 个响应。或者请求 10 只得到第一个。以上是关于HTTP 服务器应用程序如何优雅地拒绝 HTTP Pipeline 请求?的主要内容,如果未能解决你的问题,请参考以下文章