将完整请求存储在PHP变量中

时间:2009-12-04 12:31:47

标签: php http

我正在用PHP创建一个框架,我需要通过浏览器完成完整的原始请求。所以我想在变量中使用这样的东西:

POST /lolzorz/xD HTTP/1.1\r\n
Host: localhost\r\n
User-Agent: UserAgentHere/1.0.00\r\n
Content-Type: application/xml; charset=utf-8\r\n
Content-Length: 0\r\n
\r\n
<?xml version="1.0" encoding="UTF-8"?>\r\n
<request>\r\n
<question1 param="value" />\r\n
<question2 param="value" />\r\n
<question3 param="value" />\r\n
</request>\r\n

这可能吗?

我的服务器信息:

  • Mac OS X Snow Leopard(10.6.2)
  • 的Apache2
  • PHP 5作为模块运行

谢谢,

4 个答案:

答案 0 :(得分:2)

我不认为php可以抓住原始输入流的标题部分。 (getallheaders()/ apache _request_headers()已被提及) 但至少你可以通过php://input stream阅读原始帖子数据。

答案 1 :(得分:0)

如果您指的是其他网页的服务器标头,请使用get_headers()功能。

如果您指的是页面用户请求的标头,则可以使用apache_request_headers()功能。虽然正如kon所说,首选方法是这样做:

<?php $postdata = file_get_contents("php://input"); ?>

您需要确保在php.ini中有always_populate_raw_post_data选项。

答案 2 :(得分:0)

我想你必须使用$ _SERVER变量和

的内容手动将它们放在一起
print_r(getallheaders());

答案 3 :(得分:0)

您可以使用apache_request_headers

获取请求标头