使用Postman发送POST参数不起作用,但发送GET参数会起作用

whi*_*ok6 68 php postman

我正在尝试使用Chrome扩展程序Postman测试一个简单的PHP页面.当我发送URL参数时,脚本工作正常(例如,变量在$_REQUEST参数中可用).当我将它们作为x-www-form-urlencoded参数发送时,该$_REQUEST参数仅包含PHPSESSID.

剧本:

<?php
var_export($_REQUEST);
?>
Run Code Online (Sandbox Code Playgroud)

当我发送URL参数时,$_REQUEST包括它们: 网址参数

但是当我将它们作为POST变量发送时,$_REQUEST不包括它们: 在此输入图像描述

我错过了什么?

Arv*_*ana 80

我在PostMan和Advance REST Client中遇到了同样的问题.我检查了fiddler,发现我的请求有效负载没有转换为JSON格式.

我将Body中的数据作为x-www-form-urlencoded传递 在此输入图像描述

您可以通过在请求标头中使用Content-Type作为application/x-www-form-urlencoded来修复它. 在此输入图像描述

  • 是! 这解决了这个问题.实际上,`URL`附近的`PARAMS`字段设置`GET`数据而不是`POST`数据.关键字`PARAMS`总是与`GET`和`DATA`相关,与`POST`相关,用于传递数据.我认为PostMan的窥视应修复此问题以自动更改,或自动添加"DATA"按钮. (3认同)
  • 也许有人面临同样的问题:对我来说,在POSTMAN上使用`localhost/something`是行不通的,但是在最后添加`/`之后,php开始从`POST`和`php://获取值input`.我不得不使用`localhost/something /`来使它工作. (2认同)

and*_*ber 59

我在Postman中设置了url,http://但是Apache正在重定向到,https://并且不知何故POST变量正在被丢弃.

我将其更改为后https://,POST变量正常工作.

另请参见:https://stackoverflow.com/a/28461500/704803

  • 这也是我遇到的问题.nginx通过302重定向到https,POST参数在重定向上被删除.手动将URL设置为https:// working. (2认同)

And*_*ner 19

只需使用Body Tab并进入post parameters那里.请注意,Body Tab如果Get选中,则禁用.

屏幕截图教程.


mus*_*aft 12

检查标题中的内容类型.我在POSTMAN标题中发送原始JSON和我的内容类型作为application/json时遇到了问题.

我的php在请求帖子中看到了杰克.直到我将内容类型改为application/x-www-form-urlencoded并使用RAW textarea中的JSON并将其类型作为JSON,我的PHP应用程序才开始查看帖子数据.不是我在处理原始json时的预期,但它现在正在为我需要的东西工作.

邮差POST请求


Sat*_*nde 8

编辑

当您发送参数时,x-www-form-urlencoded您需要使用Content-Typeas 设置请求的标头application/x-www-form-urlencoded

  • 对我来说,选择`Body`选项卡并选择`x-www-form-urlencoded`,在该选项下面你可以找到你输入POST键/值数据的键/值输入.顺便说一下,我的Postman版本是4.10.4 (2认同)

Cho*_*xmi 6

不要使用原始 JSON 正文,而是尝试使用form-data.

表单数据请求