我正在尝试使用Chrome扩展程序Postman测试一个简单的PHP页面 . 当我发送URL参数时,脚本工作正常(例如,变量在 $_REQUEST
参数中可用) . 当我将它们作为 x-www-form-urlencoded
参数发送时, $_REQUEST
参数仅包含 PHPSESSID
.
剧本:
<?php
var_export($_REQUEST);
?>
当我发送URL参数时, $_REQUEST
包含它们:
但是当我将它们作为 POST 变量发送时, $_REQUEST
不包括它们:
我错过了什么?
10 回答
我将Postman中的url设置为
http://
但是Apache重定向到https://
并且不知何故POST变量在此过程中被丢弃 .将其更改为
https://
后,POST变量正常工作 .另见:https://stackoverflow.com/a/28461500/704803
我在PostMan和Advance REST Client中遇到了同样的问题 . 我检查了fiddler,发现我的请求有效负载没有转换为JSON格式 .
我在Body中传递我的数据为 x-www-form-urlencoded
您可以在请求标头中使用 Content-Type 作为 application/x-www-form-urlencoded 来修复它 .
只需使用
Body Tab
并在那里输入post parameters
. 请注意,如果选择了Get
,则会禁用Body Tab
.Tutorial with Screenshots .
检查 Headers 中的内容类型 . 我在POSTMAN Headers 中发送原始JSON和我的内容类型作为application / json时遇到了问题 .
我的php在请求帖子中看到了杰克 . 直到我将内容类型改为application / x-www-form-urlencoded并使用RAW textarea中的JSON并将其类型作为JSON,我的PHP应用程序才开始查看帖子数据 . 不是我在处理原始json时的预期,但它现在正在为我需要的东西工作 .
编辑
当您通过
x-www-form-urlencoded
发送参数时,您需要为请求设置 Headers ,因为Content-Type
为application/x-www-form-urlencoded
我遇到了同样的问题 . 为了解决这个问题,我添加了以下 Headers :
我不得不手动添加内容类型,即使我在原始帖子字段参数中也有“json”类型 .
对我来说,服务器期待HTTPS请求,但我没有在URL中指定 . 钩子会到达服务器,但是身体将是空的 .
从https更改为https对我帮助很大......这有助于我牢记这一点:
POST请求永远不会被缓存
POST请求不会保留在浏览器历史记录中
POST请求无法加入书签
POST请求对数据长度没有限制
很抱歉,如果这是线程死灵,但今天仍然有用,特别是使用了多少API!
我遇到的一个问题是:我没有't know that under the ' Key ' column you need to put: ' Content-Type '; I thought this was a User Key for when it came back in the request, which it isn' t .
所以简单的事情可能对你有所帮助,我认为Postman可以更好地说明这一栏,因为在使用Fiddler时我甚至不必阅读文档;而我跟Postman一样 .