php - 在 PHP 中获取原始 HTTP 请求正文的可靠方法

标签 php apache http

<分区>

Possible Duplicate:
Get raw post data

php://input 读取有效,除非请求正文是 multipart/form-data 格式,在这种情况下不会读取任何内容。

我听说 php://input 只能读取一次,我怀疑这可能是造成这种情况的原因(即 PHP 可能正在从 php://读取input 当它看到 multipart/form-data 之前我可以得到它)。但是,在测试中我发现我可以多次从流中读取而不会出现问题。

有没有办法获取无论什么格式的请求体?

这是我到目前为止所得到的:

$body = '';   

$handle = fopen('php://input', 'r');
while(!feof($handle)) {
    $body .= fread($handle, 1024);
}

最佳答案

您可以让 PHP 始终填充 $HTTP_RAW_POST_DATA 参见 http://www.php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data 虽然这不是最有效的方法。

关于php - 在 PHP 中获取原始 HTTP 请求正文的可靠方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13389712/

相关文章:

javascript - jQuery DataTable aaColomn 不工作

regex - htaccess : generates error if dot(. ) 存在于查询字符串中

php - 大文件上传时的 Apache 错误 500 (mod_security)

java - 如何解决 : javax. servlet.ServletException : java. lang.NoClassDefFoundError: javax/xml/ws/soap/SOAPFaultException

forms - 防止重新提交表单

c# - 无法加载 https ://localhost:<port>/api/try: No 'Access-Control-Allow-Origin'

c# - 在 ServiceStack 中使用 IRestClient 发出 HEAD 请求

php - 如何在单个 php 文件中使用 mysql 和 sqlserver 数据库功能?

php - MySQL 结果不想排序

php - 给定一封电子邮件作为原始文本,我如何使用 PHP 发送它?