8

我浏览了一些 Google 文章和一些 Firefox 开发者专区,发现有一个选项可以设置为不让某些网站跟踪您的信息。

我对此进行了调查,并对开发人员进行了一些谷歌搜索,但无法找到任何有关如何检测用户是否在浏览器中设置此项的信息。

它是在POST请求中还是在任何类型的请求中发送的?它来自用户代理吗?我只是想知道如何管理它而不是存储他们ips的登录作为示例。

4

3 回答 3

13

它作为HTTP 标头发送:

function dnt_enabled()
{
   return (isset($_SERVER['HTTP_DNT']) && $_SERVER['HTTP_DNT'] == 1);
}

if dnt_enabled() {
    // do stuff...
}

或者,如果您使用的是 PHP 7:

function dnt_enabled(): bool
{
   return (bool)$_SERVER['HTTP_DNT'] ?? false;
}
于 2016-05-17T23:49:51.683 回答
1
$do_not_track_requested = ! empty( $_SERVER[ 'HTTP_DNT' ] );

所有 HTTP 标头都存在于 中$_SERVER,前缀为HTTP_.

https://www.php.net/manual/en/reserved.variables.server.php#89567

于 2020-01-14T19:51:20.523 回答
1

导航器.doNotTrack

如果您想使用客户端 JavaScript 来检查用户是否dnt设置了请求标头,您可以使用navigator.doNotTrack.

此属性返回dntHTTP 标头的值(即"1""0""unspecified")。

您可以通过 PHP 通过 AJAX 发布此值来访问此值。

const is_not_trackable = navigator.doNotTrack === '1';

console.log(is_not_trackable); // True if user has requested privacy via DNT
console.log(navigator.doNotTrack); // Current value of DNT header

注意:在发布时,navigator.doNotTrack仍被认为是实验技术。预计未来行为会发生变化,并在您的应用程序中使用它之前谨慎行事。请参阅浏览器兼容性

于 2021-02-28T03:02:30.377 回答