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
相关文章,请点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。