为啥我用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返回时候加上的

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10

我以前遇到过,中病毒了,你把你的php-fpm容器重启然后试试。
解决办法,php-fpm容器的监听端口不要对外暴露。

4个月前 评论
忆往昔弹指间 (作者) 4个月前
donggan (楼主) 4个月前
忆往昔弹指间 (作者) 4个月前
donggan (楼主) 4个月前
忆往昔弹指间 (作者) 4个月前
donggan (楼主) 4个月前

你用的什么来测试接口的

4个月前 评论
donggan (楼主) 4个月前
sanders

没太明白楼主的意思哈,但我猜楼主可能想问 form-data 的那堆破折号有违常识。如果是这样的话,就好回答了,这单纯是请求的问题,和服务端没有关系。

POST 请求和 GET 请求的主要区别就是它会被允许带一个 body 部分数据,body 体现为在报文的 header 之后空一行后继续传输内容。但同样是 POST 请求,其 body 部分的格式却多种多样,常见的有 纯文本、form-data、uri编码 等等,其中最常见的表单提交就是 uri 编码,简化体现为:

POST your/api/path HTTP 1.1

username=admin&password=123456

form-data 则更多适用于文件上传,需要定义 boundary 用于变量或文件分割你可以从请求头部里面找到。

POST your/api/path HTTP 1.1
content-type:
multipart/form-data; boundary=----------------------------651561477647585047346910

----------------------------651561477647585047346910
Content-Disposition: form-data; name="username"
admin
----------------------------651561477647585047346910
Content-Disposition: form-data; name="password"

以上两种在 PHP 中都会被自动解析到 $_POST 超全局变量中。

当然接口常见的还是直接传文本,比如 XML 和 JSON 这两种格式一般不会被 PHP 自动进行变量解析,需要手动调用相关类库进行解析。

Postman 的话是有选项的,普通表单选 x-www-form-urlencoded 就可以了。

4个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!