如何解决读取正文之前拒绝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
您也可以保留默认规则,因为它们也会禁止许多无用的访问,尽管删除那些实际上阻止您自己的网站正常工作的规则会花费一些时间,因此删除所有这些默认规则可能是一个好主意。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。