开发者

Google Charts of SSL

I need to get the free Google charts working ov开发者_StackOverflow社区er SSL without any security errors. I am using c# and asp.net.

As Google charts does not support SSL by default, I am looking for a robust method of using there charts but ensuring my user doesn't get any security warnings over their browser.

One thought was to use a handler to call the charts api and then generate the output my site needs.

Similar to Pants are optional blog post. I haven't been able to get this example working at this stage.

Any suggestions, or samples are welcome.

Thanks


the Google Charts API is now available over HTTPS at via https at chart.googleapis.com.

Source: http://www.imperialviolet.org/2010/11/29/charthttps.html


We do this automatically in the NetQuarry Platform - it's pretty simple, although you do force the image to come through your site vs. charts.google.com, making your browser run the request through a single connection.

Since a chart is just a link to an image, what we do is to build the link to the chart (a much more complex process, obviously), then add the whole link to the query string on an internal handler (handler.ashx?req=chart& ). So the new link looks like this:

handler.ashx?act=chrt&req=chart&cht=p3&chs=450x170&chd=s:HAR9GBA&chl=New|In%20Progress|Responded|Won't%20Respond|On%20Hold|Future|Review|&chg=20,20,1,5&chg=10,25,1,5&chco=0A477D

Then, we simply download the image data and write it back as the response.

Here's the code:

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);
        }
    }


I Have a partial solution that has one issue.

here is the link to my new post asking for help with a specific problem regarding my solution

My Attempt at a SSL handler

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜