2

在移动 Chrome 浏览器中打开流量节省程序选项时,网站的行为会有所不同。使用 JavaScript 确定是否启用数据保护程序的最佳方法是什么。

4

3 回答 3

4

现在在 2018 年,官方文档说您可以像这样检测 JS 中的数据保存选项:

if ("connection" in navigator) {
    if (navigator.connection.saveData === true) {
        // Implement data saving operations here.
    }
}
于 2018-10-04T18:59:58.173 回答
1

从常见问题解答

我可以检测用户是否打开了数据压缩代理?

是的,有点。从 Chrome 49(2016 年 2 月 2 日测试版,预计稳定日期在 3 月下旬)开始,当用户在 Chrome 中启用数据保护程序功能时,Chrome 将为每个 HTTP 请求添加一个值为“on”的保存数据 HTTP 标头。关闭该功能时,HTTP 标头将不存在。将此用作来自用户的意图信号,表明他们意识到他们正在使用的数据量,而不是他们的连接正在通过数据压缩代理。例如,当用户通过 HTTPS 访问站点时,即使安全连接未通过数据压缩代理传递,也会设置 HTTP 标头。

于 2017-06-28T15:00:08.743 回答
1

如常见问题解答中所建议的,我已尝试扫描标题列表并检查Save-Data参数是否存在。

我正在关注移动 Chrome 中的标题,

标头列表

通过扫描这些数据,如果Save-Data有标题,我们可以假设它Data Saveron

/* 
* This is PHP Code 
* will not work on clicking "Run Code Snippet" 
* Host this code on php server as .php file 
*/

<?php
header('Content-Type: application/json');
$headers =  getallheaders();
$datasaver = false;
foreach($headers as $key=>$val){
    if(strtolower($key) == 'save-data' && $val == 'on'){
        $datasaver = true;
    }
}

$status = array('data-saver'=>$datasaver);

echo json_encode($status);

?>

于 2017-06-29T04:23:17.810 回答