读取正文之前拒绝HTTP请求

| 我正在一个网站上,用户将需要上传一些非常大的文件。该网站是用PHP编写的。 在某些情况下,我会根据标头拒绝文件。理想情况下,我想在收到标头后立即拒绝请求,而无需阅读正文。如果标头足以表明应该拒绝该文件,则没有理由读取200M文件。另外,当我确实接受请求时,我想定期保存接收到请求正文时读取的字节数。 我知道这对PHP来说是不可能的,因为在PHP拿到它之前先读取整个HTTP请求。我有什么选择?我从未使用过Perl,但是我正在阅读mod_perl可以访问Apache API。使用mod_perl可以做到吗?一个Apache模块?     
已邀请:
        使用标准的PHP处理程序几乎是不可能的。在解析请求之前,您不会收到请求,但是遗憾的是没有好的方法可以将其推迟。 编辑:我在使用commons fileupload库的流式传输模式和Java方面有很好的经验。合并到Apache配置中有点混乱,但是如果您要谈论200M文件,则值得节省带宽。     
        如果可以对拒绝文件的规则进行硬编码,则可以在.htaccess中使用mod_rewrite规则。使用%{HTTP:header}条件:
RewriteCond %{HTTP:AcceptThisFile} False [NC]
RewriteRule (...)
    
        有可以与\“ simple \”正则表达式一起使用的modsecurity。那在Apache2中执行,并在接收整个文件之前执行。您可以从阅读文档开始: http://www.modsecurity.org/documentation/modsecurity-apache/2.5.5/modsecurity2-apache-reference.html 您也可以保留默认规则,因为它们也会禁止许多无用的访问,尽管删除那些实际上阻止您自己的网站正常工作的规则会花费一些时间,因此删除所有这些默认规则可能是一个好主意。     

要回复问题请先登录注册