【问题标题】:Is it possible to get ALL response headers from from Apache using PHP?是否可以使用 PHP 从 Apache 获取所有响应标头?
【发布时间】:2022-06-11 02:18:27
【问题描述】:

我像这样从浏览器获取请求标头。

<?php
$DataFromBrowser='';
$DataToBrowser='';

$headers =  getallheaders();
foreach($headers as $key=>$val){
  $DataFromBrowser = $DataFromBrowser .  $key . ': ' . $val . "\n";
}



//echo get_raw_http_request();
echo "Data from browser";
echo '<textarea rows="12" style="width:100%;">' .  $DataFromBrowser  . '</textarea>';

?>

输出将如下所示。

主机:127.0.0.1
用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8
接受语言:en-US,en;q=0.5
接受编码:gzip、deflate、br
连接:保持活动
饼干:foo=bar
升级不安全请求:1
Sec-Fetch-Dest:文档
Sec-Fetch-Mode:导航
Sec-Fetch-Site:无
Sec-Fetch-User:?1

现在我想做完全相同的事情,但对于来自服务器的响应标头。我知道我可以执行以下操作,但它会创建另一个连接,我需要当前服务页面的响应标头。

<?php
$URL = 'https://www.google.com';

$headers = get_headers($URL);
foreach($headers as $value) {
    echo $value;
    echo "<br>";
}
?>

如果我将上面的内容更改为http://127.0.0.1,它就会陷入僵局,并且会循环直到它崩溃。

响应标头应如下所示。

HTTP/1.1 200 正常
日期:格林威治标准时间 2022 年 6 月 8 日星期三 16:53:45
服务器:Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.0.3
X-Powered-By:PHP/8.0.3
内容长度:589
保活:超时=5,最大值=100
连接:保持活动
内容类型:文本/html;字符集=UTF-8

【问题讨论】:

  • “如果我将上面的内容更改为127.0.0.1 它就会陷入僵局”是什么意思?您拥有“在您自己的计算机上控制此代码”的能力,因此请了解它实际上在做什么:它是否甚至加载该脚本或是否启动一个完全不同的文件,因为您已经在端口 80 上运行服务器?它是否可以通过 get_headers?您是否打开了警告/错误?等等等等。
  • 你的意思是headers_list()?还要检查apache_response_headers()
  • 在服务器端 inside 请求时,您无法获取请求的响应标头。包装 PHP 调用(以及任何中间缓存/代理)的 Web 服务器将在 PHP 完成处理后添加标头。你需要所有的标题吗?或者只是 PHP 本身可能添加的那些?
  • html/css/javascript请只使用代码sn-ps。
  • “如果我将上面的内容更改为http://127.0.0.1,它就会陷入僵局,并且会循环直到它崩溃。” - 这可能不是因为脚本您显示的代码也是通过请求相同的 URL 触发的...?

标签: php html


猜你喜欢
  • 2012-04-14
  • 2011-11-04
  • 1970-01-01
  • 2017-03-21
  • 2017-07-07
  • 1970-01-01
  • 2017-06-18
  • 2017-03-27
  • 2015-09-29
相关资源
最近更新 更多