Опции для Google Maps через SSL

Недавно мы обнаружили, что API Карт Google плохо работает с SSL. Достаточно справедливо, но каковы некоторые варианты преодоления этого, которые другие эффективно использовали?

Будет ли API Карт работать через SSL (HTTPS)?

В настоящее время API Карт недоступен через безопасное (SSL) соединение. Если вы используете API Карт на защищенном сайте, браузер может предупреждать пользователя о незащищенных объектах на экране.

Мы рассмотрели следующие варианты

  1. Разделение страницы таким образом, чтобы сбор данных кредитной карты (требование для SSL) не находился на той же странице, что и карта Google.
  2. Переключение на другого поставщика карт, например Virtual Earth. Ходят слухи, что они поддерживают SSL.
  3. Трюки с IFRAME. Звучит глупо.
  4. Проксирование звонков в Google. Похоже, много накладных расходов.

Есть ли другие варианты или есть ли у кого-нибудь представление о вариантах, которые мы рассмотрели?

Ответов (7)

Решение

Я согласен с двумя предыдущими ответами, что в этом случае с точки зрения удобства использования может быть лучше разделить две функции на отдельные экраны. Вы действительно хотите, чтобы ваши пользователи были сосредоточены на вводе полной и точной информации о кредитной карте, а отображение карты на том же экране может отвлекать.

Для справки, Virtual Earth, безусловно, полностью поддерживает SSL. Чтобы включить его, вам просто нужно изменить ссылку на скрипт с http: // на https: // и добавить & s = 1 к URL-адресу, например

<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1" type="text/javascript"></script>

становится

<script src="https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1&s=1" type="text/javascript"></script>

Если вы получаете ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ в IE 9 при отображении карт Google, используйте

<script src="https://maps.google.com/maps?file=api&v=2&hl=en&tab=wl&z=6&sensor=true&key=<?php echo $key;?>
" type="text/javascript"></script>

вместо того

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE"
  type="text/javascript"></script>

Я только что удалил протокол http, и он заработал!

Из этого:

<script src="http://maps.google.com/maps/api/js?sensor=true" type="text/javascript"></script>

К этому:

<script src="//maps.google.com/maps/api/js?sensor=true" type="text/javascript"></script>

Я бы пошел с вашим первым решением. Это позволяет пользователю сосредоточиться на вводе данных своей кредитной карты.

Затем вы можете перенести их на другую веб-страницу, которая запрашивает или предоставляет им дополнительную информацию, относящуюся к карте Google.

Это похоже на коммерческие требования / проблему удобства использования - есть ли у вас веская причина разместить карту на странице кредитной карты? Если да, возможно, стоит поработать над некоторыми техническими проблемами.

Вы можете попробовать использовать Mapstraction , чтобы вы могли переключиться на провайдера, поддерживающего SSL, и снова переключиться на Google, если он будет поддерживать его в будущем.

Если вы являетесь клиентом Google Maps API Premier , SSL поддерживается. Мы используем это, и это хорошо работает.

До того, как Google сделал доступным SSL, мы проксировали весь трафик, и это работало приемлемо. Вы теряете преимущество CDN от Google, когда используете этот подход, и можете заблокировать свой IP-адрес, поскольку будет казаться, что вы генерируете большой трафик.

Просто чтобы добавить к этому

http://googlegeodevelopers.blogspot.com/2011/03/maps-apis-over-ssl-now-available-to-all.html

Еще не пробовал перенести свои SSL-карты (в итоге использовал API карт Bing) обратно в Google, но вполне может быть на картах.