¿Cómo funciona la opción "Solicitar sitio de escritorio" de Chrome?

94

Para iOS, Google Chrome, cuando un usuario presiona el botón "Solicitar sitio de escritorio", ¿qué hace el navegador para intentar abrir un sitio de escritorio? Me imagino algún tipo de encabezado en la solicitud que buscan los sitios, o algo similar.

butallmj
fuente

Respuestas:

64

Creo que la única diferencia es el User-Agent:encabezado de la solicitud.

Estos son los encabezados de User-Agent enviados por Chrome en mi dispositivo 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

Observe la palabra "Móvil" en el primero, y también la mención del sistema y dispositivo Android. Al marcarlos, veo que también proporciona información falsa, a saber, X11 y x86_64, para coincidir estrechamente con el valor enviado por la versión de Desktop Linux de Cromo.

dsh
fuente
14
Un encabezado separado sería genial. El olfato de User Agent es tan horrible.
Mu Mind
10
Estoy de acuerdo. A veces, la detección y el redireccionamiento automáticos implementados por algunos sitios son extremadamente contraproducentes y agravantes.
dsh
5
Una mejor solución sería detectar el tamaño, las interfaces y las capacidades del dispositivo. Las consultas de medios CSS son un paso en la dirección correcta.
Brad
1
Esta función no se implementa mediante un simple cambio y actualización de UA. La verdad es que la mayoría de los sitios móviles NO volverán al escritorio si se cargan con una cadena UA de escritorio. Entonces, ¿Safari usa tu solicitud original? No Parece funcionar incluso si originalmente escribió la URL del sitio móvil. No sé cómo se implementa porque el nombre de las versiones móviles no está estandarizado de ninguna manera, pero hay algo más inteligente que un simple cambio de UA.
Andrew G
Me gustaría señalar que la "ventana gráfica de diseño" también cambiaría si se activa la opción "Solicitar sitio de escritorio", que afecta la consulta de medios. Consulte el manual-web-móvil para obtener más información sobre la ventana gráfica de diseño.
Rick
19

Solo quería señalar que Chrome ahora no solo cambia User-Agentsino que también ignora la metaetiqueta original de la ventana gráfica si "Solicita un sitio de escritorio". Por lo tanto, ya no será necesario rastrear User-Agenty puede confiar en el cambio de la ventana gráfica, ya que la mayoría de los sitios receptivos lo harán automáticamente. Consulte este cambio para obtener más información.

Thomas
fuente
1
Gracias por eso. mi propio sitio web muy simple se comporta de manera muy diferente cuando no se hace clic en él y no puedo entender por qué, ya que no hago nada más que consultas de medios en CSS.
R Reveley
17

Otra pequeña diferencia es que la solicitud parece haber sido a la última URL ingresada intencionalmente antes de que cualquier re-director la moviera. Por ejemplo:

Dado: somesite.com rastrea el agente, ve Android y hace un document.location + = "/ m";

Entonces: el navegador tendrá una URL de somesite.com/m

Pero: si "Solicita un sitio de escritorio", cambiará el User-Agent y volverá a solicitarlo desde somesite.com

A menos que: en primer lugar, haya ingresado directamente a la URL móvil de somesite.com/m, en cuyo caso simplemente se vuelve a cargar somesite.com/m.

Esperaría que esto funcione con las redirecciones HTTP 301 y 302, sé que funciona con los cambios de ubicación de documento (al menos como se describe), y especularía que funciona con actualizaciones de <meta>.

Jason Miller
fuente
¿Basó su respuesta en esto ?
Keale
@Keale probablemente al revés, dadas las marcas de tiempo
verbumSapienti
Parece que si una solicitud POST obtiene un 302 o 303 que sugiere un GET para otra URL, entonces el usuario cambia la configuración de 'vista de escritorio', el navegador enviará una solicitud GET a la URL original que devolvió el 302/303 (perdiendo los parámetros POST ). Parece que tanto Firefox como Chrome hacen esto y, en mi opinión, esto definitivamente no es lo que debería estar sucediendo.
Jake
-2

Este fragmento de JavaScript efectivamente hará lo mismo:

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

10us
fuente