我浏览了一些 Google 文章和一些 Firefox 开发者专区,发现有一个选项可以设置为不让某些网站跟踪您的信息。
我对此进行了调查,并对开发人员进行了一些谷歌搜索,但无法找到任何有关如何检测用户是否在浏览器中设置此项的信息。
它是在POST
请求中还是在任何类型的请求中发送的?它来自用户代理吗?我只是想知道如何管理它而不是存储他们ips
的登录作为示例。
我浏览了一些 Google 文章和一些 Firefox 开发者专区,发现有一个选项可以设置为不让某些网站跟踪您的信息。
我对此进行了调查,并对开发人员进行了一些谷歌搜索,但无法找到任何有关如何检测用户是否在浏览器中设置此项的信息。
它是在POST
请求中还是在任何类型的请求中发送的?它来自用户代理吗?我只是想知道如何管理它而不是存储他们ips
的登录作为示例。
它作为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;
}
$do_not_track_requested = ! empty( $_SERVER[ 'HTTP_DNT' ] );
所有 HTTP 标头都存在于 中$_SERVER
,前缀为HTTP_
.
https://www.php.net/manual/en/reserved.variables.server.php#89567
如果您想使用客户端 JavaScript 来检查用户是否dnt
设置了请求标头,您可以使用navigator.doNotTrack
.
此属性返回dnt
HTTP 标头的值(即"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
仍被认为是实验技术。预计未来行为会发生变化,并在您的应用程序中使用它之前谨慎行事。请参阅浏览器兼容性。