如何使用chrome-php获取URL的响应头?
使用chrome-php获取请求响应头的实现方法
你可以通过两种方式在chrome-php中获取请求响应头:
方法一:获取页面导航的主响应头
直接通过navigate()方法返回的导航对象获取对应响应,再读取响应头:
$browserFactory = new BrowserFactory('chromium-browser'); // 启动无头Chrome $browser = $browserFactory->createBrowser([ 'noSandbox' => true, 'debugLogger' => 'php://stdout', ]); try { $page = $browser->createPage(); // 导航并等待完成,获取响应对象 $navigation = $page->navigate($url)->waitForNavigation(); $response = $navigation->getResponse(); // 获取响应头 $responseHeaders = $response->getHeaders(); info('页面响应头:', $responseHeaders); info([$page->getHtml()]); } finally { $browser->close(); }
方法二:监听所有请求的响应事件
如果需要捕获页面所有请求(包括资源加载)的响应头,可以监听页面的response事件:
$browserFactory = new BrowserFactory('chromium-browser'); $browser = $browserFactory->createBrowser([ 'noSandbox' => true, 'debugLogger' => 'php://stdout', ]); try { $page = $browser->createPage(); // 监听响应事件 $page->on('response', function (\HeadlessChromium\Response $response) { // 可根据需求过滤请求,比如只处理主文档请求 if ($response->getRequest()->isNavigationRequest()) { $headers = $response->getHeaders(); info('主文档响应头:', $headers); } // 去掉上面的判断即可获取所有请求的响应头 }); $page->navigate($url)->waitForNavigation(); info([$page->getHtml()]); } finally { $browser->close(); }
关键说明
getHeaders()方法返回关联数组,键为响应头名称,值为对应内容(部分头如Set-Cookie会以数组形式返回)- 若要获取特定响应头,可直接通过数组索引访问,比如
$responseHeaders['Content-Type']
内容的提问来源于stack exchange,提问作者Sourav Chakraborty
相关产品推荐
相关产品推荐

