2014-04-01 27 views
0

当请求中不包含内容长度标头时,是否有任何方法可以检索请求主体?如何获取没有内容长度的请求主体?

例如,我这个在/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',那么我会得到一个'tes'数据的输出。

是否有任何方法让php检索请求正文,而不管内容长度标题?

回答

0

当请求中不包含内容长度 标题时,是否有任何方法来检索请求主体?

是的。但你包括它的请求。

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" 

你可以只省略发送的报头。

+0

我在curl命令中指定头文件来模拟丢失的头文件。我希望它不包含内容长度标题,因为我有另一个(大的,复杂的)程序,我不能轻易测试这是什么。 – Benubird

+0

所以你应该编辑你的问题。您需要的是内容长度标题VALUE不存在时的行为。 – arco444