2010-04-06 3 views
4

Мне нужно, чтобы бесплатные графики Google работали над SSL без каких-либо ошибок безопасности. Я использую C# и asp.net.Google Графики SSL

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

Одна мысль заключалась в использовании обработчика для вызова диаграмм api, а затем генерации вывода, необходимого для моего сайта.

Похоже на Pants are optional сообщение в блоге. Я не смог заставить этот пример работать на этом этапе.

Любые предложения или образцы приветствуются.

Thanks

+0

Что конкретная проблема с кодом этого сообщения в блоге? –

+0

В настоящее время ничто не кажется рендерингом даже после вызова моего обработчика и ошибок не было. Я немного поправлю свою версию кода здесь. спасибо – SetiSeeker

ответ

3

Мы делаем это автоматически в NetQuarry Platform - это довольно просто, хотя вы заставить изображение чтобы пройти через ваш сайт против charts.google.com, чтобы ваш браузер выполнил запрос через одно соединение.

Поскольку диаграмма - это всего лишь ссылка на изображение, мы создаем ссылку на диаграмму (гораздо более сложный процесс, очевидно), а затем добавим всю ссылку на строку запроса на внутреннем обработчике (handler.ashx? req = chart &). Таким образом, новая ссылка выглядит следующим образом:

handler.ashx акт = CHRT & REQ = диаграмма & CHT = p3 & CHS = 450x170 & CHD = S: HAR9GBA & хл = Новое | В% 20Progress | Ответили | вона? т% 20Respond | На% 20Hold | будущее | Обзор | & Chg = 20,20,1,5 & Chg = 10,25,1,5 & CHCO = 0A477D

Тогда мы просто загрузить данные изображения и записать его обратно в качестве ответа.

Вот код:

Blockquote

private void GoogleChart(HttpContext cxt) 
    {    
     const string csPrefix = "?act=chrt&req=chart&"; 

     HttpRequest  req = cxt.Request; 
     HttpResponse rsp = cxt.Response; 
     string   sUrl = cxt.Request.RawUrl; 
     int    nStart = sUrl.IndexOf(csPrefix, StringComparison.OrdinalIgnoreCase); 

     rsp.Clear(); 

     if (nStart > 0) 
     { 
      sUrl = "http://chart.apis.google.com/chart?" + sUrl.Substring(nStart + csPrefix.Length); 

      System.Net.WebClient wc = new System.Net.WebClient(); 

      byte[] buffer = wc.DownloadData(sUrl); 

      cxt.Response.ClearContent(); 
      cxt.Response.ClearHeaders(); 
      cxt.Response.ContentType = "application/octet-stream"; 
      cxt.Response.AppendHeader("content-length", buffer.Length.ToString());    

      cxt.Response.BinaryWrite(buffer); 
     } 
    } 
0

У меня есть частичное решение, имеющее одну проблему.

вот ссылка на мой новый пост с просьбой о помощи с конкретной проблемой в отношении моего решения

My Attempt at a SSL handler

10

СХЕМАХ API Google теперь доступен через HTTPS в через HTTPS на chart.googleapis.com.

Источник: http://www.imperialviolet.org/2010/11/29/charthttps.html

+0

Да, это сработало для меня. Вы можете просто ссылаться на 'https: // chart.googleapis.com/chart', и это работает. –

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