为啥我用get请求post请求接口后返回form-data的请求参数,问下请求参数为啥会返回呢?
情况是这样的,我用docker部署了nginx容器和php容器和mysql等lnmp环境,然后我请求接口,我直接在index.php文件里面
return “hello”;
当用get方式请求时候就返回
传form-data传参数时候
----------------------------651561477647585047346910
Content-Disposition: form-data; name="username"
admin
----------------------------651561477647585047346910
Content-Disposition: form-data; name="password"
123456
----------------------------651561477647585047346910--
hello
当用post请求就只是返回
array(2) {
["username"]=>
string(5) "admin"
["password"]=>
string(6) "123456"
}
hello
我就想知道,多出来的
----------------------------651561477647585047346910
Content-Disposition: form-data; name="username"
admin
----------------------------651561477647585047346910
Content-Disposition: form-data; name="password"
123456
----------------------------651561477647585047346910--
是在哪里加上的,是nginx配置文件哪里有问题加上了还是php返回时候加上的
我以前遇到过,中病毒了,你把你的php-fpm容器重启然后试试。
解决办法,php-fpm容器的监听端口不要对外暴露。
你用的什么来测试接口的
没太明白楼主的意思哈,但我猜楼主可能想问 form-data 的那堆破折号有违常识。如果是这样的话,就好回答了,这单纯是请求的问题,和服务端没有关系。
POST 请求和 GET 请求的主要区别就是它会被允许带一个 body 部分数据,body 体现为在报文的 header 之后空一行后继续传输内容。但同样是 POST 请求,其 body 部分的格式却多种多样,常见的有 纯文本、form-data、uri编码 等等,其中最常见的表单提交就是 uri 编码,简化体现为:
form-data 则更多适用于文件上传,需要定义 boundary 用于变量或文件分割你可以从请求头部里面找到。
以上两种在 PHP 中都会被自动解析到 $_POST 超全局变量中。
当然接口常见的还是直接传文本,比如 XML 和 JSON 这两种格式一般不会被 PHP 自动进行变量解析,需要手动调用相关类库进行解析。
Postman 的话是有选项的,普通表单选 x-www-form-urlencoded 就可以了。