【问题标题】:How to get request body without content-length?如何获取没有内容长度的请求正文?
【发布时间】:2014-04-01 11:38:34
【问题描述】:

当请求中不包含 content-length 标头时,有什么方法可以检索请求正文?

例如,我在 /var/www/test.php 中有这个:

print_r(apache_request_headers());
$data = file_get_contents('php://input');
var_dump($data);

然后运行这个命令:

curl -X POST -d test --header 'Content-Length: ' localhost/test.php

我看到没有 content-length 标头,并且 $data 是空的。例如,如果我指定内容长度为“3”,我将得到 $data 的输出“tes”。

有没有办法让 php 检索请求正文,而不考虑 content-length 标头?

【问题讨论】:

    标签: php apache http-headers


    【解决方案1】:

    有没有办法在内容长度时检索请求正文 请求中不包含标头?

    是的。但是您正在将它包含在请求中。

    curl -d test localhost/test.php 应该返回:

    Array
    (
        [User-Agent] => curl/7.xx.x
        [Host] => localhost
        [Accept] => */*
        [Content-Length] => 4
        [Content-Type] => application/x-www-form-urlencoded
    )
    
    string(4) "test"
    

    您可以省略发送标头。

    【讨论】:

    • 我在 curl 命令中指定标头来模拟缺少的标头。我希望它不包含 content-length 标头,因为我有另一个(大型、复杂)程序,我无法轻松测试它。
    • 所以你应该编辑你的问题。您想要的是内容长度标头 VALUE 不存在时的行为。
    猜你喜欢
    • 2012-07-07
    • 2023-03-10
    • 2016-04-23
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多