是否允许POST空数据?

时间:2012-04-10 06:57:10

标签: php apache http post http-post

对于我正在开发的Web API,我想做类似于Facebook Graph API的事情。用户可以邀请其他用户。要接受或拒绝邀请,其他用户需要执行空POST:

/invitation/<invitationId>/accepted

/invitation/<invitationId>/rejected

但是,这对我不起作用,因为当我发布空数据时,PHP(或Apache?)会返回以下错误:

  

请求实体太大了!

     

POST   方法不允许传输数据,或数据量   超出容量限制。

显然这不是真的,因为POST数据是空的(我在Firebug中进行了双重检查)。所以我的问题是:

  • HTTP协议是否允许POST空数据?如果不是,我想我会发布一些虚拟数据,但我宁愿避免这种黑客攻击。

  • 如果允许 ,我该如何让Apache / PHP允许请求?

2 个答案:

答案 0 :(得分:0)

我想你想要做某种RESTful api,这就是你需要发送没有数据的帖子的原因。

Apache / php应该允许您发送空的帖子数据,这些限制必须由您正在使用的框架的某些服务器配置强加

你可以用这个简单的文件测试一下:

<?php

echo '<h2>This page was requested using ' . $_SERVER['REQUEST_METHOD'] . '</h2>';
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
<form action="" method="post">
    <input type="submit" value="Request this page using POST" />
</form>

您将看到脚本检测到post请求(使用来自_SERVER超全局的REQUEST_METHOD),即使_POST数组是empy

答案 1 :(得分:-1)

你为什么要做POST请求?让您的API检测是否发送了数据,如果没有数据,则发出GET请求。事实上,在大多数情况下提出GET请求是因为它更有效率,因为浏览器可以更轻松地缓存该信息(并且您可以通过发送特定于缓存的标头来使您的API智能化以利用它)。

在您的情况下提出POST请求毫无意义:)