小程序网络请求header头设置Content-Type

小程序发起http网络请求,通过wx.request函数的调用。该函数接收一个对象,可以在对象里配置包括地址headermethod等。method默认为post请求。但是,我们在服务器端使用$_POST或框架如Phalcon里的$this->request->getPost()等获取参数时,取得结果为空。但是通过流获取:

$params = file_get_contents('php://input')

Phalcon里通过:

$params = $this->request->getJsonRawBody();

这样是能够得到参数的。为什么POST请求,却不能在POST里得到呢?我们注意看文档,会发现此时的headercontent-typeapplication/json(默认方式),再查看PHP的文档,可以看到:

当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本。

也就是说,我们需要重新设置小程序的header头里的content-typeapplication/x-www-form-urlencoded,就可以获取POST里的参数了。