当前位置: 首页 > 知识库问答 >
问题:

PHP$_POST为空,但HTTP_RAW_POST_DATA具有所有数据

林浩漫
2023-03-14

我只是想用JS向服务器发送一个post请求。但服务器具有空的$_post数组。我可以使用http_raw_post_data,但在PHP5.6中将不推荐使用它。我可以在$_post数组中发布数据吗?

环境:Chrome、apache2、PHP、AngularJS(我正在使用$http.post函数)。

调试映像(很抱歉没有直接附加映像--我没有10信誉)

共有2个答案

李安歌
2023-03-14

$_post由类型为Form-URlencodedMultipart/Form-Data的请求填充。通常情况下如下所示:

foo=bar&ipsum=lorm

所以有点像get请求

因为您直接发布了JSON(这太棒了!)您可以使用:

$request_payload = file_get_contents("php://input");

更多信息请参阅文档。

隆钊
2023-03-14

POST数据必须是查询字符串或多部分/表单数据格式才能正确解码。你的数据好像是JSON,所以你得自己解码:

$_POST = json_decode(file_get_contents('php://input'), true);
 类似资料:
  • 我有麻烦向服务器发出POST请求,我的数据没有发送回我。 我有一个非常简单的PHP脚本: 服务器脚本 我想对这个脚本发出一个POST请求,并获得一些JSON数据作为响应。 工作要求 如果我从HTML发出一个POST请求,这将非常有效: 这也起作用: 响应   不工作脚本(desire):Aurelia提取客户端(JS2016) 提取客户端配置 响应 php备选方案 我尝试在PHP中查看数组内部的内

  • 问题内容: 我正在从表单中添加一系列项目,如果所有项目都是空的,我想执行一些验证并将其添加到错误字符串中。所以我有: 然后,如果所有数组元素均为空,请执行: 问题答案: 您可以只使用内置的array_filter 如果未提供回调,则将删除所有等于FALSE的输入项(请参阅转换为布尔值)。 因此可以在一条简单的代码行中做到这一点。

  • item_ids是一个传入的数组,它本质上是@[1234,1235],只是几个数字。接收此请求的web服务没有为$_POST设置任何内容,但是我发送的JSON确实显示在$HTTP_RAW_POST_DATA中。这是为什么?是我的请求做错了什么,还是更有可能是服务器端出现了问题? 提前感谢!

  • 我正在寻找性能最友好的方法来检查数组中的所有值是否为null,或者是否至少有一个元素具有其他类型。 也就是说,我需要一个方法,它根据传递的数组返回布尔值 例如:

  • 问题内容: 如何运行选择所有非null的MySQL查询?就像 我只需要删除所有内容即可吗? 问题答案: 您必须在每列上明确说明条件,例如

  • 问题内容: 我一直在Spring Security + Webflux中使用ReactiveAuthenticationManager。它是经过自定义的,以返回一个实例,从该实例中我可以确定是调用时应接收的内容。据我所知,我无法通过两种方式访问​​身份验证上下文: 要么 尝试从控制器或组件访问这些文件将解决。对于我是否真的要在自定义管理器中返回实例,我有些疑问,好像我是: 和的实例在哪里扩展 有趣