Se quitó la API de Geolocation de orígenes no seguros en Chrome 50

Chrome tiene una intención pública de dar de baja funciones potentes, como la ubicación geográfica en orígenes no seguros, y esperamos que otras también sigan adelante.

A partir de Chrome 50, Chrome ya no admite la obtención de la ubicación del usuario mediante la API de ubicación geográfica de HTML5 de páginas que se proporcionan mediante conexiones no seguras. Esto significa que la página que realiza la llamada a la API de Geolocation debe publicarse desde un contexto seguro, como HTTPS.

Es un problema importante, ya que afectará directamente a cualquier sitio que requiera el uso de la API de ubicación geográfica y que no se publique en HTTPS, pero es un cambio que creemos que es beneficioso para todos los usuarios de la Web. Esta publicación debería ayudarte a comprender el razonamiento y cómo proceder.

¿Cuándo ocurrirá el cambio?

Este cambio entrará en vigencia a partir de la versión 50 de Chrome (12 p.m. PST del 20 de abril de 2016).

La consola de herramientas para desarrolladores de Chrome envía advertencias desde la versión 44 (lanzada el 21 de julio de 2015).
Hubo varios anuncios públicos que describen la justificación (y el análisis) de los motivos del cambio:

Varias otras fuentes destacaron esto: Mobiforge (26 de enero de 2016), Wired (17 de marzo de 2016) y VentureBeat (13 de abril de 2016).

¿A qué se debe este cambio?

La ubicación es datos sensibles. El uso de HTTPS es necesario para proteger la privacidad de los datos de ubicación de sus usuarios. Si la ubicación del usuario está disponible en un contexto no seguro, los atacantes de la red podrán saber dónde está el usuario. Esto compromete gravemente su privacidad.

¿A quién afecta esto?

Esto afecta a todas las páginas que usen actualmente la API de Geolocation desde páginas que se publican a través de HTTP (no seguras). También afecta a los iframes HTTPS que usan la API de Geolocation si están incorporados en páginas HTTP. (no podrás polyfill con un marco compartido entregado por HTTPS).

¿Toda mi aplicación web necesita HTTPS?

No es un requisito que toda la app se entregue a través de HTTPS para usar Geolocation. Solo las páginas que utilizan la ubicación geográfica deben publicarse en un contexto seguro. Actualmente, un contexto seguro es cualquier elemento alojado en el nivel superior en HTTPS o localhost. Por ejemplo, un iframe que apunta a un origen seguro pero está alojado en un origen no seguro (http ://paul.kinlan.me/) no podría llamar a la API de ubicación geográfica.

Te recomendamos que migres a HTTPS, ya que las funciones nuevas y existentes del navegador potentes requieren orígenes seguros.

¿Esto afecta el desarrollo local?

No debería hacerlo, ya que localhost se declaró como "potencialmente seguro" en la especificación y, en nuestro caso, las solicitudes de ubicación geográfica que se entregan en el nivel superior sobre localhost seguirán funcionando.

¿Puedo detectar en el tiempo de ejecución si se bloqueó la ubicación geográfica porque no estaba en un contexto seguro?

Sí. La especificación de ubicación geográfica define un objeto PositionError que se pasa a la devolución de llamada de falla de las APIs de Geolocation. El objeto define las propiedades code y message.

Los errores debidos a este problema de contexto seguro mostrarán un code de 1, que es un “Error de permiso denegado”. Puedes recibir este error cuando un usuario rechazó el acceso o el sistema rechazó el acceso a las ubicaciones del usuario. Esto significa que deberás revisar el mensaje para ver cuál fue el motivo exacto.

Esto puede ser bastante frágil, ya que podría cambiar en el futuro, pero un indicador claro de que se trató de un problema de contenido no seguro es buscar la cadena "Solo se permiten orígenes seguros".

navigator.geolocation.getCurrentPosition(success => {
    /* Do some magic. */
}, failure => {
    if (failure.message.startsWith("Only secure origins are allowed")) {
    // Secure Origin issue.
    }
});

Recuerda que no puedes simplemente comprobar el origen de la página porque la página podría estar en https, sino dentro de un iframe alojado en un contexto no seguro.

Necesito usar la ubicación geográfica. ¿Qué debo hacer?

Si deseas utilizar la API de Geolocation HTML5 o tu sitio ya la utiliza, migra las páginas que llaman a HTTPS a la API de Geolocation y asegúrate de que se utilicen en un contexto seguro.

Hay varias opciones de resguardo disponibles para obtener la ubicación de un usuario que no se ve afectada por este cambio, como la API de Google Maps Geolocation, GeoIP (por ejemplo, hay otras soluciones basadas en la ubicación geográfica) y un código postal ingresado por el usuario. Sin embargo, recomendamos que la mejor ruta para garantizar el acceso continuo a la ubicación geográfica sea trasladarse a HTTPS.