[英]Is it allowed to POST empty data?
对于我正在开发的 web API 我想做类似于 Facebook 图 API 的事情。一个用户可以邀请另一个用户。 要接受或拒绝邀请,其他用户需要执行一个空的 POST 到:
/invitation/<invitationId>/accepted
要么
/invitation/<invitationId>/rejected
但是,这对我不起作用,因为当我发布空数据时,PHP(或 Apache?)返回以下错误:
请求的实体太大!
POST方式不允许传输数据,或数据量超过容量限制。
显然这不是真的,因为 POST 数据是空的(我在 Firebug 中仔细检查过)。 所以我的问题是:
HTTP 协议是否允许发布空数据? 如果没有,我想我会发布一些虚拟数据,但我宁愿避免这种黑客行为。
如果允许,我怎样才能让 Apache/PHP 允许请求?
我猜您想做某种 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>
您将看到脚本检测到发布请求(使用来自 _SERVER 超全局的 REQUEST_METHOD),即使 _POST 数组是空的
你为什么要发出 POST 请求? 让你的 API 检测是否有数据发送,如果没有数据,则发出 GET 请求。 事实上,在大多数情况下,发出 GET 请求效率更高,因为浏览器可以更轻松地缓存该信息(并且您可以通过发送特定于缓存的标头使您的 API 智能地利用它)。
在你的情况下发出 POST 请求是没有意义的:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.