How to detect users setting do-not-track
Navigator.doNotTrack
If you want to use client-side JavaScript to check whether or not a user has the dnt
request header set, you can use navigator.doNotTrack
.
This property returns the value of the dnt
HTTP header (i.e., "1"
, "0"
, or "unspecified"
).
You can access this value via PHP by POSTing this value via 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
Note: At the time of posting,
navigator.doNotTrack
is still considered experimental technology. Expect behavior to change in the future, and proceed with caution before using it in your application. See Browser Compatibility.
$do_not_track_requested = ! empty( $_SERVER[ 'HTTP_DNT' ] );
All HTTP headers are present in $_SERVER
, prefixed with HTTP_
.
https://www.php.net/manual/en/reserved.variables.server.php#89567
It's sent as an HTTP header:
function dnt_enabled()
{
return (isset($_SERVER['HTTP_DNT']) && $_SERVER['HTTP_DNT'] == 1);
}
if dnt_enabled() {
// do stuff...
}
Or, if you're using PHP 7:
function dnt_enabled(): bool
{
return (bool)$_SERVER['HTTP_DNT'] ?? false;
}