我正在开发一个PHP webapp,它接受来自特定客户端的大量POST文件上传,并且希望在这之前接受或拒绝这些上传(基于各种标题和其他因素,而不仅仅是大小)文件使用HTTP/1.1 100继续上传。支持HTTP 100继续使用PHP
从HTTP/1.1 spec 8.2.3一些快速背景:
的目的的100(继续)状态(见10.1.1节)是允许客户机,其发送请求消息与请求体,以确定是否在客户端发送请求体之前,原始服务器愿意接受请求(基于请求头)。在某些情况下,如果服务器在不查看主体的情况下拒绝该消息,则客户端可能不适合或非常低效地发送主体。
的问题是,阿帕奇看到了期待:从客户端100继续,返回100继续并接受文件上传所有PHP开始处理之前......不过,我需要PHP后,立即想到开始处理:100-继续。我不知道这是否可能,所以我有两个问题:
- 是否有可能让PHP在Expect之后立即开始处理:100-continue?
- 如果不是,什么是好的选择?
我目前正在考虑模拟100继续指定客户端首先发送HEAD请求与POST相同的头。然后webapp可以返回响应以继续POST或错误代码。欢迎其他建议!
我意识到这是一个非常古老的问题,但是最终是否使用HEAD请求,然后是POST?如果是这样,它实施起来有多舒服?我目前发现自己因无法在PHP/Apache堆栈上正确实现100个继续期望而感到沮丧。 – Marvin 2016-02-17 10:18:40
100继续是不可能在PHP中正确控制(至少它是,我已经转向更好的语言)。如果你能控制客户端,那么是的,发送HEAD(或任何其他类型的请求)来预检主要的POST是方法。如果您无法控制客户端,唯一的选择是设置一个代理/中间件,可以拦截100并进行适当的响应。 – 2016-02-19 04:39:07
我确实拥有客户端的控制权,所以它是一个很好的回退。我目前正在考虑试图在Apache中提供一个钩子来实现对标题进行正确的pre-100-继续检查。不知道它是否会导致任何有用的。 http://stackoverflow.com/questions/35456122/apache-modules-implementing-100-continue?lq=1 – Marvin 2016-02-19 11:07:01