Chrome публично намерен прекратить поддержку таких важных функций, как геолокация, на незащищенных источниках, и мы надеемся, что другие последуют его примеру.
Начиная с Chrome 50, Chrome больше не поддерживает получение местоположения пользователя с помощью HTML5 Geolocation API со страниц, доставляемых через незащищенные соединения. Это означает, что страница, которая делает вызов Geolocation API, должна обслуживаться из защищенного контекста , такого как HTTPS .
Это важный вопрос, поскольку он напрямую повлияет на любой сайт, требующий использования API геолокации и не обслуживаемый по https, но это изменение, которое, как мы считаем, выгодно всем пользователям в Интернете. Этот пост должен помочь вам понять обоснование и как действовать.
Когда ситуация изменится?
Это изменение вступает в силу с Chrome 50 (12:00 по тихоокеанскому времени 20 апреля 2016 г.).
Консоль инструментов разработчика Chrome выдает предупреждения, начиная с версии 44 (выпущенной 21 июля 2015 г.).
Было сделано несколько публичных заявлений, в которых описывается обоснование (и обсуждение) того, почему мы вносим это изменение:
- Намерение прекратить поддержку ряда мощных функций HTTP (февраль 2015 г.)
- Намерение прекратить поддержку API геолокации через HTTP (ноябрь 2015 г.)
- Chrome Dev Summit (ноябрь 2016 г.)
- Блог о выпуске Chrome Beta Channel (17 марта 2016 г.)
- Веб-сайт статуса Chrome
На это же обратили внимание и другие источники: Mobiforge (26 января 2016 г.), Wired (17 марта 2016 г.), VentureBeat (13 апреля 2016 г.).
Почему мы вносим это изменение?
Местоположение — это конфиденциальные данные! Требование HTTPS необходимо для защиты конфиденциальности данных о местоположении ваших пользователей. Если местоположение пользователя доступно из незащищенного контекста, злоумышленники в сети смогут узнать, где находится этот пользователь. Это серьезно ставит под угрозу конфиденциальность пользователя.
Кого это касается?
Это влияет на любую страницу, которая в настоящее время использует API геолокации со страниц, обслуживаемых по HTTP (небезопасно). Это также влияет на HTTPS iframes, которые используют API геолокации, если они встроены в страницы HTTP. (Вы не сможете выполнить полифилл с использованием общего фрейма, доставляемого по HTTPS.)
Нужен ли HTTPS всему моему веб-приложению?
Не обязательно, чтобы все приложение обслуживалось через HTTPS для использования геолокации. Только страницы, использующие геолокацию, должны обслуживаться через защищенный контекст. В настоящее время защищенный контекст — это все, что размещено на верхнем уровне на HTTPS или localhost. Например, iframe, который указывает на защищенный источник, но размещен на незащищенном источнике ( http ://paul.kinlan.me/ ), не сможет вызывать API геолокации.
Мы настоятельно рекомендуем вам перейти на HTTPS, поскольку мощные новые и существующие функции браузера требуют защищенных источников .
Влияет ли это на местное развитие?
Этого не должно быть, localhost в спецификации объявлен «потенциально безопасным», и в нашем случае запросы геолокации, обслуживаемые на верхнем уровне через localhost, по-прежнему будут работать.
Могу ли я определить во время выполнения, была ли заблокирована геолокация из-за отсутствия защищенного контекста?
Да. Спецификация геолокации определяет объект PositionError , который передается в обратный вызов сбоя API геолокации. Объект определяет code
и свойства message
.
Ошибки, вызванные этой проблемой безопасного контекста, возвращают code
1, что является "Ошибкой отказа в доступе". Вы можете получить эту ошибку, когда пользователь запретил доступ или система запретила доступ к местоположениям пользователя. Это означает, что вам придется проверить сообщение, чтобы узнать точную причину.
Это может быть довольно хрупким, так как ситуация может измениться в будущем, но явным признаком того, что проблема связана с незащищенным содержимым, является наличие строки «Разрешены только безопасные источники».
navigator.geolocation.getCurrentPosition(success => {
/* Do some magic. */
}, failure => {
if (failure.message.startsWith("Only secure origins are allowed")) {
// Secure Origin issue.
}
});
Помните, вы не можете просто проверить источник страницы, поскольку ваша страница может быть на https, но внутри iframe, размещенного в незащищенном контексте.
Мне действительно нужно использовать геолокацию. Что мне делать?
Если вы хотите использовать API геолокации HTML5 или если ваш сайт уже использует API геолокации, перенесите страницы, выполняющие вызовы API геолокации, на HTTPS , обеспечив их использование в безопасном контексте.
Существует ряд резервных вариантов получения местоположения пользователя, на которые это изменение не влияет, например, Google Maps Geolocation API , GeoIP (например, есть и другие решения на основе геолокации) и введенный пользователем почтовый индекс. Однако мы настоятельно рекомендуем , что лучшим способом обеспечения постоянного доступа к геолокации является переход на HTTPS.
,Chrome публично намерен прекратить поддержку таких важных функций, как геолокация, на незащищенных источниках, и мы надеемся, что другие последуют его примеру.
Начиная с Chrome 50, Chrome больше не поддерживает получение местоположения пользователя с помощью HTML5 Geolocation API со страниц, доставляемых через незащищенные соединения. Это означает, что страница, которая делает вызов Geolocation API, должна обслуживаться из защищенного контекста , такого как HTTPS .
Это важный вопрос, поскольку он напрямую повлияет на любой сайт, требующий использования API геолокации и не обслуживаемый по https, но это изменение, которое, как мы считаем, выгодно всем пользователям в Интернете. Этот пост должен помочь вам понять обоснование и как действовать.
Когда ситуация изменится?
Это изменение вступает в силу с Chrome 50 (12:00 по тихоокеанскому времени 20 апреля 2016 г.).
Консоль инструментов разработчика Chrome выдает предупреждения, начиная с версии 44 (выпущенной 21 июля 2015 г.).
Было сделано несколько публичных заявлений, в которых описывается обоснование (и обсуждение) того, почему мы вносим это изменение:
- Намерение прекратить поддержку ряда мощных функций HTTP (февраль 2015 г.)
- Намерение прекратить поддержку API геолокации через HTTP (ноябрь 2015 г.)
- Chrome Dev Summit (ноябрь 2016 г.)
- Блог о выпуске Chrome Beta Channel (17 марта 2016 г.)
- Веб-сайт статуса Chrome
На это же обратили внимание и другие источники: Mobiforge (26 января 2016 г.), Wired (17 марта 2016 г.), VentureBeat (13 апреля 2016 г.).
Почему мы вносим это изменение?
Местоположение — это конфиденциальные данные! Требование HTTPS необходимо для защиты конфиденциальности данных о местоположении ваших пользователей. Если местоположение пользователя доступно из незащищенного контекста, злоумышленники в сети смогут узнать, где находится этот пользователь. Это серьезно ставит под угрозу конфиденциальность пользователя.
Кого это касается?
Это влияет на любую страницу, которая в настоящее время использует API геолокации со страниц, обслуживаемых по HTTP (небезопасно). Это также влияет на HTTPS iframes, которые используют API геолокации, если они встроены в страницы HTTP. (Вы не сможете выполнить полифилл с использованием общего фрейма, доставляемого по HTTPS.)
Нужен ли HTTPS всему моему веб-приложению?
Не обязательно, чтобы все приложение обслуживалось через HTTPS для использования геолокации. Только страницы, использующие геолокацию, должны обслуживаться через защищенный контекст. В настоящее время защищенный контекст — это все, что размещено на верхнем уровне на HTTPS или localhost. Например, iframe, который указывает на защищенный источник, но размещен на незащищенном источнике ( http ://paul.kinlan.me/ ), не сможет вызывать API геолокации.
Мы настоятельно рекомендуем вам перейти на HTTPS, поскольку мощные новые и существующие функции браузера требуют защищенных источников .
Влияет ли это на местное развитие?
Этого не должно быть, localhost в спецификации объявлен «потенциально безопасным», и в нашем случае запросы геолокации, обслуживаемые на верхнем уровне через localhost, по-прежнему будут работать.
Могу ли я определить во время выполнения, была ли заблокирована геолокация из-за отсутствия защищенного контекста?
Да. Спецификация геолокации определяет объект PositionError , который передается в обратный вызов сбоя API геолокации. Объект определяет code
и свойства message
.
Ошибки, вызванные этой проблемой безопасного контекста, возвращают code
1, что является "Ошибкой отказа в доступе". Вы можете получить эту ошибку, когда пользователь запретил доступ или система запретила доступ к местоположениям пользователя. Это означает, что вам придется проверить сообщение, чтобы узнать точную причину.
Это может быть довольно хрупким, так как ситуация может измениться в будущем, но явным признаком того, что проблема связана с незащищенным содержимым, является наличие строки «Разрешены только безопасные источники».
navigator.geolocation.getCurrentPosition(success => {
/* Do some magic. */
}, failure => {
if (failure.message.startsWith("Only secure origins are allowed")) {
// Secure Origin issue.
}
});
Помните, вы не можете просто проверить источник страницы, поскольку ваша страница может быть на https, но внутри iframe, размещенного в незащищенном контексте.
Мне действительно нужно использовать геолокацию. Что мне делать?
Если вы хотите использовать API геолокации HTML5 или если ваш сайт уже использует API геолокации, перенесите страницы, выполняющие вызовы API геолокации, на HTTPS , обеспечив их использование в безопасном контексте.
Существует ряд резервных вариантов получения местоположения пользователя, на которые это изменение не влияет, например, Google Maps Geolocation API , GeoIP (например, есть и другие решения на основе геолокации) и введенный пользователем почтовый индекс. Однако мы настоятельно рекомендуем , что лучшим способом обеспечения постоянного доступа к геолокации является переход на HTTPS.