2011-01-21 1 views
0

Проблема, которую я пытаюсь решить, - это обслуживать линейные диаграммы подготовленный API визуализации Google на защищенных веб-сайтах. Я прочитал пару форумов & сообщений в блогах, но не нашел подходящего решения.Создание API визуализации Google для возврата визуализированной визуализации из https://charts.googleapis.com/* вместо http://charts.apis.google.com/*

One solution mentioned here должен получить изображение через серверный код, сохранить его локально &, а затем обслуживать его. Но проблема для меня заключается в том, как создавать URL-адреса изображений на лету? В настоящее время я использую API визуализации, чтобы просто передавать свои данные в конструктор «google.visualization.ImageSparkLine» &, и все остальное.

В любом случае, посмотрев на ответ, сгенерированный этим методом, я получаю, что изображение возвращается с шаблоном url http://chart.apis.google.com/chart, что является основной причиной проблемы на сайтах, обслуживаемых через SSL. Это приводит к появлению предупреждения в FF, IE, Chrome.

Теперь я понял, что если я просто заменил «http://chart.apis.google.com» на «https://chart.googleapis.com», все будет хорошо.

Таким образом, любая помощь для: 1. конвертации URL-адреса изображения до его получения браузером или 2. Получение безопасного ответа для начала; будет здорово.

ответ

1

Я, наконец, решил это, создав URL-адреса графических изображений.

Перед выполнением вызова API визуализации google для генерации визуализации код JavaScript проверяет, имеет ли файл location.protocol «https» или нет. Если у него есть https, то есть

  1. Он кодирует строку необработанных значений с использованием стандарта «расширенного кодирования». (См http://code.google.com/apis/chart/docs/data_formats.html)
  2. Затем он объединяет различные параметры для построения https://chart.googleapis.com/ * URL (см & http://code.google.com/apis/chart/docs/chart_params.html#gcharts_chthttp://code.google.com/apis/chart/docs/making_charts.html#multichart)
  3. Динамически генерирует изображение, используя этот URL & затем прикрепляется к родительскому контейнеру.

Протестировано на FF3.6, Chrome, IE8 (w & без режима совместимости) без генерирования предупреждающих сообщений или всплывающих окон.

Смежные вопросы