加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 没有Content-type的空$_POST

发布时间:2020-12-13 17:39:52 所属栏目:PHP教程 来源:网络整理
导读:如果我发出POST请求,其中未在请求标头中设置content-type,则变量$_POST仍为空. 问题:如何强制PHP填充$_POST? 我遇到了使用XDomainRequest制作Javascript AJAX请求的问题,您无法定义任何标头.只是为了让您更容易理解这个问题,您可以通过这种方式在PHP中使用
如果我发出POST请求,其中未在请求标头中设置content-type,则变量$_POST仍为空.

问题:如何强制PHP填充$_POST?

我遇到了使用XDomainRequest制作Javascript AJAX请求的问题,您无法定义任何标头.只是为了让您更容易理解这个问题,您可以通过这种方式在PHP中使用Javascript来模拟相同的效果:

$data = 'test=1';

$fp = fsockopen('www.yourpage.org',80,$errno,$errstr,5);
fputs($fp,"POST /test_out.php HTTP/1.1rn");
fputs($fp,"Host: www.yourpage.orgrn");
//fputs($fp,"Content-type: application/x-www-form-urlencodedrn");
fputs($fp,"Content-length: ". strlen($data) ."rn");
fputs($fp,"Connection: closernrn");
fputs($fp,$data);

while(!feof($fp)) { echo fgets($fp,128); }
fclose($fp);

test_out.php会的

var_dump($_POST);

没有正确的内容类型,$_POST中的变量会神奇地消失.

这更像是一个教育问题.我问这个是因为这里的大多数人无法想象内容类型有这种效果.我被要求’回来说实话’.所以,你走了.

解决方法

如果必须,可以使用Apache mod_headers覆盖/注入必要的头.或者以其他方式手动重建$_POST数组. (另见 userland multipart/form-data handler)

如果它总是urlencoded,只需从php:// input(包含原始POST请求体)中读取并使用parse_str:

parse_str(file_get_contents("php://input"),$_POST);

这应该重新创建POST数组,就像PHP一样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读