我正在开发一个 PHP webapp,它接受来自特定客户端的大型 POST 文件上传,并希望在使用 HTTP/1.1 100 上传文件之前接受或拒绝这些上传(基于各种标头和其他因素,而不仅仅是大小)继续。
HTTP/1.1 规范 8.2.3的一些快速背景知识:
100(继续)状态(参见第 10.1.1 节)的目的是允许正在发送带有请求正文的请求消息的客户端确定源服务器是否愿意接受请求(基于请求标头)在客户端发送请求正文之前。在某些情况下,如果服务器在不查看正文的情况下拒绝消息,则客户端发送正文可能不合适或效率极低。
问题是Apache从客户端看到Expect:100-continue,返回100 Continue并在PHP开始处理之前接受所有文件上传......但是我需要PHP在Expect:100-continue之后立即开始处理。我不确定这是否可能,所以我有两个问题:
- 是否可以让 PHP 在 Expect: 100-continue 之后立即开始处理?
- 如果没有,有什么好的选择?
我目前正在考虑通过指定客户端首先发送与 POST 具有相同标头的 HEAD 请求来模拟 100 continue。然后,webapp 可以返回响应以继续 POST 或错误代码。欢迎其他建议!