通过HTTPS的Google图表

时间:2010-03-20 06:17:07

标签: php google-visualization

我正在尝试将图表作为图像加载到安全站点中。通过https的Google Chart图像示例如下:

http://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld

问题是,虽然您可以通过直接点击链接来加载这样的图像,但您不能将其作为图像包含在页面中。它只是不会加载。

有关如何绕过这个的任何想法?或者解决方案一般使用PHP?

3 个答案:

答案 0 :(得分:8)

看起来谷歌最终更新了他们的API以允许HTTPS。您需要做的就是将主机名切换到chart.googleapis.com,以便基本URL类似于https://chart.googleapis.com/chart,它可以正常工作。享受!

答案 1 :(得分:5)

Google不支持基于HTTPS的图表...

我遇到了同样的问题。

http://groups.google.com/group/google-chart-api/browse_thread/thread/95c463d88cf3cfe4

可以然后使用PHP或.net创建一个代理页面,通过HTTPS连接过滤你的谷歌HTTP链接,以解决这个问题。

这是我用过的一个简单的PHP代理......

<?php
    // PHP Proxy
    // Loads a XML from any location. Used with Flash/Flex apps to bypass security restrictions
    // Author: Paulo Fierro
    // January 29, 2006
    // usage: proxy.php?url=http://mysite.com/myxml.xml

    $session = curl_init($_GET['url']);                    // Open the Curl session
    curl_setopt($session, CURLOPT_HEADER, false);          // Don't return HTTP headers
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);   // Do return the contents of the call
    $xml = curl_exec($session);                            // Make the call
    header("Content-Type: text/xml");                  // Set the content type appropriately
    echo $xml;        // Spit out the xml
    curl_close($session); // And close the session
?>

答案 2 :(得分:4)

看起来谷歌正在阻止对具有Referrer:标头集的图表的https请求。

[tla ~]$ curl 'http://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld' 2>/dev/null | file -
/dev/stdin: PNG image, 200 x 125, 8-bit/color RGB, non-interlaced
[tla ~]$ curl 'https://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld' 2>/dev/null | file -
/dev/stdin: PNG image, 200 x 125, 8-bit/color RGB, non-interlaced
[tla ~]$ curl -H 'Referer: http://stackoverflow.com' 'http://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld' 2>/dev/null | file -
/dev/stdin: PNG image, 200 x 125, 8-bit/color RGB, non-interlaced
[tla ~]$ curl -H 'Referer: http://stackoverflow.com' 'https://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld' 2>/dev/null | file -
/dev/stdin: ASCII HTML document text, with very long lines