0

我正在尝试在 PHP 中获取客户端提示标头。这些需要选择加入。我使用header()函数来做到这一点。之后,我阅读了标题。现在问题来了:我一次打开网站时无法读取该标题。如果我刷新页面,PHP 可以访问标题并且一切正常。我检查了 Chrome 中的“网络”选项卡,并device-memory没有在第一次请求时发送。然而,在第二个。

如果我尝试在在线沙箱中运行此代码,它总是无法读取请求的标头。

这是我使用的代码:

<?php

header("Accept-CH: Device-Memory");
header("Accept-CH-Lifetime: 86400");

$headers = getallheaders();

if (isset($headers['device-memory'])) {
  echo 'Your device has approximately ' . $headers['device-memory'] . ' GiB of RAM.';
} else {
  echo 'No information about RAM available.';
}
4

1 回答 1

0

然后,客户端将使用包含这些详细信息的标头字段发出未来的请求 [...]

来自维基百科

因此,要访问客户端提示标头,可以发送Access-CH标头并重新加载页面:

<?php

header('Accept-CH: Device-Memory');

if (!isset($_GET['opted'])) {
  header('Location: ./?opted');
}

$headers = getallheaders();

if (isset($headers['device-memory'])) {
  echo 'Your device has approximately ' . $headers['device-memory'] . ' GiB of RAM.';
} else {
  echo 'No information about RAM available.';
}

PHP 将在添加?opted参数后发送标头并重新加载。

于 2021-06-12T18:23:09.843 回答