通过 post 提交内容,有时候会出现这种问题,php后端接收不到数据,打印 $_GET $_POST $_REQUEST 都是空数组,比如下面这个curl:
curl 'http://local.diary-api.com:8018/index.php' \
-H 'Connection: keep-alive' \
-H 'Pragma: no-cache' \
-H 'Cache-Control: no-cache' \
-H 'Accept: application/json, text/javascript, */*; q=0.01' \
-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36' \
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
-H 'Origin: http://local.diary.com:8018' \
-H 'Referer: http://local.diary.com:8018/' \
-H 'Accept-Language: zh-CN,zh;q=0.9' \
--data-raw 'gid=5e9e8f11187c89.26546237&passport=a97351829e428387afd71ec46b9f5c6e&auth_code=b42742&access_token=e99d3c&time_now=1648710861&client=h5&ver=1.1&sid=6389587223PMZQK&tks=0&action=addPlain&pid=0&title=%E6%89%80%E6%9C%89%E7%9A%84%E6%94%B6%E5%85%A5%E6%94%AF%E5%87%BA%E5%87%80%E5%80%BC%E6%9B%BF%E6%8D%A2%E4%B8%BA&start_time=1648656000&dead_time=1649519999&dead_hour=&important=1&id=0&content=%E6%89%80%E6%9C%89%E7%9A%84%E6%94%B6%E5%85%A5%E6%94%AF%E5%87%BA%E5%87%80%E5%80%BC%E6%9B%BF%E6%8D%A2%E4%B8%BA&cancel_give_up=0&XDEBUG_SESSION_START=1' \
--compressed \
--insecure
但是通过 file_get_contents( 'php://input') 是能够获取到内容的,获取到的内容如下:
gid=5e9e8f11187c89.26546237&passport=a97351829e428387afd71ec46b9f5c6e&auth_code=b42742&access_token=e99d3c&time_now=1648711022&client=h5&ver=1.1&sid=6389587223PMZQK&tks=0&action=addPlain&pid=0&title=%E6%89%80%E6%9C%89%E7%9A%84%E6%94%B6%E5%85%A5%E6%94%AF%E5%87%BA%E5%87%80%E5%80%BC%E6%9B%BF%E6%8D%A2%E4%B8%BA&start_time=1648656000&dead_time=1649519999&dead_hour=&important=1&id=0&content=%E6%89%80%E6%9C%89%E7%9A%84%E6%94%B6%E5%85%A5%E6%94%AF%E5%87%BA%E5%87%80%E5%80%BC%E6%9B%BF%E6%8D%A2%E4%B8%BA&cancel_give_up=0&XDEBUG_SESSION_START=1
提交别的内容又能正常提交,php 7.4 环境,不知道是为啥,请大神帮忙看看,谢谢。
如果php端使用的是框架,有可能被框架过滤掉了。可以试试框架自带的参数获取方法能否获取到