想要获取HTTP请求的body内容,可以通过PHP内置的$_POST、$_GET、$_REQUEST来获取。这些变量是自动解析并收集HTTP请求内容的关联数组,其中$_POST是存放POST请求的参数,$_GET是存放GET请求的参数,而$_REQUEST则是使用POST或GET请求发送的参数都能够获取。
但如果需要获取HTTP请求的原始body内容,需要使用PHP中的一些函数进行处理。下面是两个获取HTTP body内容的方法:
方法一:使用php://input
使用php://input是读取http请求主体的一种常用方法,该方法的原理是,将请求体放入到标准输入流中,使用php://input途径读取即可。
$body = file_get_contents('php://input');
在上述代码中,使用PHP中的file_get_contents函数读取了php://input模式下的文件内容,即HTTP请求的body数据。需要注意的是,使用该方法读取到的请求体数据,只能读取一次,因为一旦读取完毕,就无法再次读取,除非重新发送请求。
方法二:使用HTTP_RAW_POST_DATA
PHP中的$HTTP_RAW_POST_DATA这个全局变量默认情况下不会被赋值,因此无法直接访问。使用之前需要将php.ini中的always_populate_raw_post_data设置为1:
always_populate_raw_post_data=1
在设置完毕之后,即可使用HTTP_RAW_POST_DATA获取请求的body内容:
$body = $HTTP_RAW_POST_DATA;
需要注意的是,使用HTTP_RAW_POST_DATA要特别小心。因为此变量是请求主体数据原始形式的一个字符串,需要进行防注入过滤。在PHP7及以上版本中,该变量已经被移除,推荐使用php://input来进行文件读写。
通过以上两种方法,即可获取到HTTP请求的原始body内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP获取HTTP body内容的方法 - Python技术站