澄清:我正在用C ++编写HTTP服务器。我确切知道我收到了多少数据,并且我正在以块的形式解析HTTP请求。因此,在我收到整个请求之前,我可以知道方法是什么。
请考虑以下情形:我收到的HTTP请求的方法设置为' DO_WORK'。这是不受支持的(只是一个例子),我应该回复405(不支持的方法)。但是,我能多快这样做?
在发送回复之前,我应该等到收到整个请求吗?
答案 0 :(得分:2)
除非有技术原因禁止,否则您通常可以在准备好后立即发送回复,因为客户在完全发送请求之前不会阅读回复。但是,您必须阅读完整请求,除非您在发送回复后断开连接。
答案 1 :(得分:0)
您可以使用mitmproxy之类的工具拦截来电并返回您想要的内容。
答案 2 :(得分:0)
如果您使用的是Apache,则可以设置LIMIT指令: http://httpd.apache.org/docs/current/mod/core.html#limit
我不知道它是否会理解DO_WORK,但您可以尝试这样做: https://serverfault.com/questions/333610/apache-and-custom-http-method
如果您只想将其限制为某些方法,请执行limitexcept:
<Directory .../.../>
...
<LimitExcept GET POST>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
我还没有测试过这个。
此外,您还不知道通过网络传递了多少邮件。如果它很聪明,服务器只会先发送标题,然后再发送部分主体。但是如果消息很小,它可能会立即发送标题和消息。