无需 PHP 干预即可解析 Multipart/Form-Data POST 请求
尽管 php://input 和 $HTTP_RAW_POST_DATA 在处理多部分方面存在限制/form-data POST请求,有一种方法可以访问原始数据
RAW multipart/form-Data 解析的挑战
PHP 会自动解析 multipart/form-data 请求,导致无法直接获取原始数据。当处理 PHP 无法解析的格式不正确的数据时,这可能会成为一个问题。
绕过限制
解决方案在于使用 Apache 配置修改请求标头指示。通过将 Content-Type 从 multipart/form-data 更改为 multipart/form-data-alternate,PHP 会被诱骗不解析请求。
Apache 配置修改
可以将以下代码添加到 Apache 配置中:
<Location "/backend/XXX.php"> SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate OLD_CONTENT_TYPE= RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE </Location>
该指令更改传入请求的 Content-Type 标头从 multipart/form-data 到 /backend/XXX.php 到 multipart/form-data-alternate,阻止 PHP 尝试解析请求。
检索原始数据并解析
修改配置后,可以从php://input中获取原始数据并手动解析。但是,此方法有一个警告:$_FILES 数组将为空。
这种解决方法并不理想,但它为默认 PHP 解析失败的情况提供了一种解决方案。
以上是如何在不使用内置函数的情况下在 PHP 中解析多部分/表单数据 POST 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!