支持HTTP 100继续使用PHP

时间:2010-02-12 16:58:34

标签: php rest http-status-code-100 http-1.1

我正在开发一个PHP webapp,它接受来自特定客户端的大量POSTed文件上传,并希望在使用HTTP上传文件之前接受或拒绝这些上传(基于各种标题和其他因素,而不仅仅是大小) /1.1 100继续。

HTTP/1.1 spec 8.2.3的一些快速背景:

  

100(继续)状态(参见第10.1.1节)的目的是允许正在向请求主体发送请求消息的客户端确定源服务器是否愿意接受请求(基于请求标头)在客户端发送请求主体之前。在某些情况下,如果服务器在不查看正文的情况下拒绝邮件,则客户端发送正文可能不合适或效率极低。

问题是Apache看到Expect:100-continue从客户端继续,返回100 Continue并接受文件上传所有在PHP开始处理之前......但是我需要PHP在Expect之后立即开始处理:100-继续。我不确定这是否可行所以我有两个问题:

  1. 是否有可能在Expect:100-continue之后立即开始处理PHP?
  2. 如果没有,什么是好的选择?
  3. 我目前正在考虑通过指定客户端首先使用与POST相同的标头发送HEAD请求来继续模拟100。然后,webapp可以返回响应以继续POST或错误代码。欢迎提出其他建议!

2 个答案:

答案 0 :(得分:0)

不幸的是,我认为这是不可能的。如果这是一个真正的要求,我认为最好只看其他语言。我认为今天异构环境比编写这个问题更常见,所以为什么不创建一个用其他语言编写的小服务来处理上传。

但是,PHP的工作方式是脚本只在客户端发送整个请求时才会启动。

答案 1 :(得分:-5)

尝试在HTTP级别上执行此操作似乎太难了。作为开发人员,重要的是不要陷入特定的解决方案。问题是您希望在处理上载之前进行一系列检查。您需要做的就是在上传之前放置一个符合条件的页面。如果他们通过一系列检查并符合资格,则此限定页面仅向他们显示上传表格。这正是你想要做的,只有你可以在PHP代码中做到这一点。如果可能的话,HTTP 100的东西将总是需要大量额外的配置,因此后来难以获得支持。如果您在代码中执行此操作,那些来自您(或您自己在几年内)的代码将能够清楚地了解应用程序正在做什么。