Як працює опція "Запити сайт робочого столу" Chrome?


94

Що стосується iOS google chrome, коли користувач натискає кнопку "Запити сайт робочого столу", що робить браузер, щоб спробувати створити сайт настільних ПК? Я уявляю якийсь заголовок запиту, який шукають сайти, чи щось подібне?

Відповіді:


64

Я думаю, що єдиною відмінністю є 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 для Хром.


14
Окремий заголовок був би блискучим. Нюхає агент-користувач так жахливо.
Mu Mind

10
Я згоден. Іноді автоматичне виявлення та переадресація, реалізовані на деяких сайтах, є надзвичайно контрпродуктивними та обтяжуючими.
dsh

5
Кращим рішенням було б визначити розмір пристрою, інтерфейси та можливості. Запити CSS-медіа - це крок у правильному напрямку.
Бред

1
Ця функція не реалізована простим перемикачем UA та оновленням. Правда полягає в тому, що більшість мобільних сайтів НЕ перемкнуться на робочий стіл, якщо вони завантажені настільним рядком UA. Тож Safari використовує ваш оригінальний запит? Ні. Здається, це працює, навіть якщо ви спочатку ввели URL-адресу для мобільного сайту. Я не знаю, як його реалізувати, оскільки назва мобільних версій аж ніяк не стандартизована, але відбувається щось розумніше, ніж проста зміна UA.
Андрій Г

Я хотів би зазначити, що "вікно перегляду макета" також зміниться, якщо запустити параметр "Запити сайт робочого столу", який впливає на запит медіа. Перегляньте посібник з мобільного веб-сайту, щоб отримати більш детальну інформацію про вікно перегляду макета.
Рік

19

Просто хотілося зазначити, що Chrome зараз не лише змінює, User-Agentале і ігнорує оригінальний метатег вікна перегляду, якщо ви "Запросити сайт робочого столу". Таким чином, більше не доведеться нюхати, User-Agentі ви можете розраховувати на зміну вікна перегляду, як це робитиме більшість чуйних сайтів. Дивіться цю зміну для подальшого ознайомлення.


1
Дякую за це. мій власний дуже простий веб-сайт поводиться дуже по-іншому, коли на нього не натискають, і я не можу зрозуміти, чому я не роблю нічого, крім медіа-запитів у CSS.
R Reveley

17

Ще одна незначна відмінність полягає в тому, що, схоже, запит був до останньої навмисно введеної 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> оновленнями.


Ви засновуєте свою відповідь від цього ?
Keale

@Keale, мабуть, навпаки, враховуючи часові позначки
verbumSapienti

Схоже, якщо запит POST отримує 302 або 303, що пропонує GET для іншої URL-адреси, то користувач змінює налаштування "перегляду робочого столу", браузер подасть GET-запит на вихідну URL-адресу, яка повернула 302/303 (втрачаючи параметри POST ). Здається, що Firefox та Chrome роблять це, а IMO - це точно не те, що має відбуватися.
Джейк

-2

Цей фрагмент javascript буде ефективно робити те саме:

function requestDesktopSite() {
    document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}
<button onclick="requestDesktopSite()">Request Desktop Site</button>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.