0

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

/invitation/<invitationId>/accepted

或者

/invitation/<invitationId>/rejected

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

请求的实体太大!

POST方式不允许数据传输,或者数据量超过容量限制。

显然这不是真的,因为 POST 数据是空的(我在 Firebug 中仔细检查过)。所以我的问题是:

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

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

4

2 回答 2

0

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

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

你可以用这个简单的文件来测试它:

<?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 数组是空的

于 2012-04-10T08:17:03.650 回答
-1

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

在您的情况下发出 POST 请求是没有意义的:)

于 2012-04-10T07:06:13.417 回答