Відповіді:
Я думаю, що єдиною відмінністю є User-Agent:
заголовок у запиті.
Ось заголовки User-Agent, надіслані Chrome на моєму пристрої Android:
Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19
Зверніть увагу на слово "Мобільний" у першому, а також на згадку про систему та пристрій Android. Перевіряючи їх, я бачу, що воно також надає неправдиву інформацію - а саме X11 та x86_64 - щоб тісно відповідати значенню, надісланому версією Desktop Linux для Хром.
Просто хотілося зазначити, що Chrome зараз не лише змінює, User-Agent
але і ігнорує оригінальний метатег вікна перегляду, якщо ви "Запросити сайт робочого столу". Таким чином, більше не доведеться нюхати, User-Agent
і ви можете розраховувати на зміну вікна перегляду, як це робитиме більшість чуйних сайтів. Дивіться цю зміну для подальшого ознайомлення.
Ще одна незначна відмінність полягає в тому, що, схоже, запит був до останньої навмисно введеної URL-адреси до того, як рередактори перенесли його. Наприклад:
Враховуючи: somesite.com нюхає агента, бачить Android та робить document.location + = "/ m";
Потім: браузер матиме URL-адресу somesite.com/m
Але: якщо ви "Запросіть сайт на робочому столі", він змінить User-Agent і повторно подасть запит від somesite.com
Якщо тільки: ви ввійшли безпосередньо в мобільну URL-адресу somesite.com/m, в першу чергу, і в цьому випадку це просто перезавантажує somesite.com/m.
Я б очікував, що це працює з перенаправленнями HTTP 301 і 302, я знаю, що він працює зі змінами document.location (принаймні, як описано), і міркував би, що він працює з <meta> оновленнями.
Цей фрагмент javascript буде ефективно робити те саме:
function requestDesktopSite() {
document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}
<button onclick="requestDesktopSite()">Request Desktop Site</button>