注:这是我去年写在知乎里的文章。后来要查阅,来优快云博客里翻了底朝天都没找到,甚至一度怀疑优快云丢文章。特此转发已备后用。另外发现在知乎的原文好像已经不能编辑了,而我又需要编辑它,这是转发至此的又一个理由。
原文
我前两天(当时时间是2017年1月)用易语言写一个(原以为很简单的)客户端软件,将JSON文本POST给PHP,Content-Type
是application/json
,内容就是JSON文本。结果PHP的同事把整个$_POST
都输出看了,里面根本就没有数据。我郁闷了很久。后来各种尝试,最后把Content-Type
改成application/x-www-form-urlencoded
,把POST内容改为data=json
形式,并且对json部分应用URL编码,才搞定了与PHP的通讯。但依然很迷惑。
后来我专程去查了$_POST
的官方文档,人家说的很明白,只有Content-Type
为application/x-www-form-urlencoded
或multipart/form-data
的情况下,$_POST
里面才有值。在其他情况下,$_POST
里面是没有值的。
对于客户端POST提交的 Content-Type: application/json
的情况,或其他未明确指定 Content-Type
的情况,