POST到web服务失败,而GET成功:PHP


POST to web service fails while GET succeeded: PHP

我已经在PHP中实现了一个web服务。该服务接受名称/值对作为输入,并返回JSON编码的字符串。

在我的本地apache web服务器上运行在mac-osx和windows 7上,一切都像预期的那样工作。然而,在这个基于linux的web服务提供商上托管我的PHP脚本后,我对该服务的POST请求失败。

失败的后端PHP脚本如下:

if (session_id() == "") {
    session_start();
}
ob_start();
$command = isset($_REQUEST["Command"]) ? $_REQUEST["Command"] : "";
if ($command == "") {
    echo("Handler Not Found: ");
    print_r($_REQUEST);
}

POST请求到带有Command=do_foo的url的输出总是Handler Not Found:。就好像web服务从未接收到我发送的任何参数一样。$_REQUEST的值打印为:

[PHPSESSID] => db0af76fe8028e70dc96f816d0dbe927 

如果我将调用方法更改为GET,一切都按预期工作。我错过了什么?

PS:我在使用apache.http.client.methods.HttpGet`apache.http.client.methods.HttpGet的Android应用程序中调用此web服务。我已经验证,即使我通过FireFox插件Poster

发送POST请求,POST也会失败。编辑:

  1. 我有同样的问题,如果我使用$_POST超级全局。

  2. 我不能ssh到我的主机服务器,但CPANEL显示我register_globals=off。我不知道这会不会产生问题。

查看ini设置变量order或request-order。也许POST变量被禁用以包含在$_REQUEST超全局变量中

可能$_REQUEST被禁用了。您应该使用$_POST,因为它更安全。

检查.htaccess是否有LIMIT条目,例如:

<Limit POST>
    order deny,allow
    deny from all
</Limit>