移动设备上请求桌面站点选项

5
许多移动设备,比如我的安卓手机,都有“请求桌面站点”的选项。我正在构建移动网站,希望让这个本地功能起作用。
作为开发人员,我们需要做什么呢?例如,是否有一个GET请求leave_mobile=1,或者是设备本身更改了用户代理,以欺骗应用程序认为它只是另一个桌面设备?

2
大多数情况下,设备将更改用户代理。 - Raghav Sood
1个回答

6

我在我的Android设备上进行了一些测试,读出了用户代理,并且似乎会发生变化。为使本机选项起作用,我所做的是将初始用户代理捕获到会话中,并在每个页面请求时将其与正在发送的用户代理进行比较。 如果用户代理不同,请重新验证它是否为移动设备,如果验证成功,则使用新的用户代理覆盖会话用户代理。但是,如果新的验证失败,它可能想要查找桌面版,因此发送一个新的头部重定向。

$DesktopSite = 'www.example.com';
$UserAgent = $_SERVER['HTTP_USER_AGENT'];

if (!isset($_SESSION['use_mobile'])){
    $_SESSION['use_mobile'] = 1;
    $_SESSION['user_agent'] = $UserAgent;
} else if ($_SESSION['user_agent'] != $UserAgent){  // Check if user-agent has changed
    if(!preg_match( /*preg match from http://detectmobilebrowsers.com/ */){
        $_SESSION['use_mobile'] = 0;
        $_SESSION['user_agent'] = $UserAgent; // Overwrite old user-agent with new one.
        header("location: $DesktopSite"); // Send visitor to desktop website.
    } else {
        // Visitor still seems to be mobile.
        $_SESSION['use_mobile'] = 1;
        $_SESSION['user_agent'] = $UserAgent; // Overwrite old user-agent with new one.
    }
}

如果您在桌面上首次访问移动网站,它不会将您发送回桌面站点,因为它将首先创建会话。这样,您可以在桌面上检查移动站点,而不是被发送回去。但是,如果您更改用户代理,您将重新验证并在失败时重定向。
完美地运作。希望这可以帮助未来的任何人。

一些额外的信息:https://productforums.google.com/forum/#!topic/chrome/tz24aCo6F3I - Keale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接