php代码,请求发送header及服务器响应header文章小结
发布于 作者:苏南大叔 来源:程序如此灵动~
本文描述有关php和header的故事,就是隐藏在网络请求里面的头信息。当然,头信息里面包括请求头信息和响应头信息。本文描述的是响应头信息。

这里是苏南大叔的网络自留地,写自己高兴写的内容。本文探讨php代码和响应header头信息,包括如何设置和如何获取两部分内容。测试环境:win10,nginx@1.5.11,php@7.4.29nts。头信息里面可以隐藏很多信息,在很多ctf夺旗赛里面是很常见的考点。
服务端自定义header
php可以发出自定义的header,也可以覆盖系统的内置默认header。比如最常见的x-powered-by和X-Frame-Options。测试代码:
header("X-Powered-By:HHVM 6.6.6");
header("X-Frame-Options:SAMEORIGIN");这个是苏南大叔博客的默认改写的header头。关于X-Frame-Options的解释内容,可以参考下面的链接:
显示客户端请求header
getallheaders函数是在.php文件中,获得当前请求的全部HTTP请求头信息的集合。测试代码如下:
foreach (getallheaders() as $name => $value) {
echo "$name: $value\n";
}
var_dump($_SERVER);苏南大叔个人觉得对于调试来说,打印$_SERVER变量,其实比getallheaders()更全面一些。在$_SERVER变量里面,想要的都有。
直接获得远程服务器header
$url = "https://newsn.net/";
print_r(get_headers($url, 1));如果角色变换一下的话,你去请求别人的资源,别人的资源也是会发送给你相关头信息的。这里使用了一个get_headers()函数,来获得这些信息。如果您想换成其它请求方法,可以参考文章:
file_get_contents获得远程服务器header
下面的代码是个测试:
$option = array(
'http' => array(
'method' => 'PUT',
'header'=> "Accept-language: zh-cn;\r\n" .
"Cookie: aa=bb;cc=dd;\r\n".
'User-Agent: fake ua',
)
);
$url = 'http://test/test.php';
@file_get_contents($url, false, stream_context_create($option));
var_dump($http_response_header);这里值得特别说明的是:curl相关请求发送完毕后,凭空出现一个$http_response_header变量,里面存放的就是对应的header信息。
curl发送及显示header
使用-i显示header,使用-X改变method。代码如下:
curl -i -XPUT http://test/test.php
因为这个curl的使用,并不是本文的内容,这里就不再说更多的内容了。更多curl的使用方式,请参考文章:
相关文章
综述
本文就是php和header之间的交互讨论,更多php相关文章,请点击: