我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文描述有关phpheader的故事,就是隐藏在网络请求里面的头信息。当然,头信息里面包括请求头信息和响应头信息。本文描述的是响应头信息。

苏南大叔:php代码,请求发送header及服务器响应header文章小结 - header文章小结
php代码,请求发送header及服务器响应header文章小结(图2-1)

这里是苏南大叔的网络自留地,写自己高兴写的内容。本文探讨php代码和响应header头信息,包括如何设置和如何获取两部分内容。测试环境:win10nginx@1.5.11php@7.4.29nts。头信息里面可以隐藏很多信息,在很多ctf夺旗赛里面是很常见的考点。

服务端自定义header

php可以发出自定义的header,也可以覆盖系统的内置默认header。比如最常见的x-powered-byX-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

苏南大叔:php代码,请求发送header及服务器响应header文章小结 - curl-i-x
php代码,请求发送header及服务器响应header文章小结(图2-2)

因为这个curl的使用,并不是本文的内容,这里就不再说更多的内容了。更多curl的使用方式,请参考文章:

相关文章

综述

本文就是phpheader之间的交互讨论,更多php相关文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php